将 PHP 连接到 IBM i (AS/400)
Posted
技术标签:
【中文标题】将 PHP 连接到 IBM i (AS/400)【英文标题】:Connect PHP to IBM i (AS/400) 【发布时间】:2010-09-05 06:25:57 【问题描述】:我有一个即将进行的项目,我需要将我们的网站 (php5/Apache 1.3/OpenBSD 4.1
) 连接到我们在具有 OS400 V5R3 的 iSeries 上运行的后端系统,以便我可以访问存储在那里的一些表。我做了一些检查,但遇到了一些障碍。
据我所知,IBM 的 DB2 扩展和 DB2 软件只能在 Linux 下运行。我已经尝试使用 IBM 的所有软件编译扩展,甚至尝试了他们的预编译 ibm_db2 扩展,但没有成功。 IBM 只支持 Linux,所以我在内核中打开了 Linux 仿真,但这似乎没有任何帮助。
如果有人遇到过让一切都在 OpenBSD 下本地运行,那会很棒,但我想我可能需要做的是设置第二台运行 CentOS 并安装了 DB2 的服务器(很可能通过 ZendCore for IBM,因为看起来为我做这一切)和驱动程序,以便我可以设置一个小型事务服务器,我可以针对该服务器进行发布并获取我需要的 DB2 数据的 JSON 表示。
第二个选项是否显得过于矫枉过正,还是其他人有更好的想法?
【问题讨论】:
【参考方案1】:您是否考虑过使用unixODBC 连接到服务器?如果我没记错的话,它支持 IBM DB2 并在 OpenBSD 上编译。查看http://www.php.net/odbc 了解有关 PHP 方面的更多信息。
如果您不能让它工作,那么您可以选择在 Linux 服务器上设置 Web 服务。
【讨论】:
【参考方案2】:看起来网络服务将成为我的答案。根据 PHP 文档,在生产机器上,我宁愿不必编译和维护我自己的特殊 PHP 安装,因为需要编译 ODBC 支持。
【讨论】:
【参考方案3】:为什么不使用 PHP 的 PDO?我不得不在这里猜测,因为我找不到所有可用于 OpenBSD 的端口的公开列表,但由于有一个可用于 FreeBSD、NetBSD 等的端口。也许你也很幸运。
(我猜即使 OpenBSD 链接到 FreeBSD 的搬运工手册,Freshports 也不适用于您的系统?)
如果 PDO 不可用,并且我希望您使用端口,并且根据以下链接,可以使用 php5-ODBC:
http://www.openbsd.org/pkg-stable40.html所以假设你通过端口管理你的系统,有你的指针。
希望有帮助!
【讨论】:
【参考方案4】:您也可以使用标准的 ODBC 驱动程序直接连接。 IBM 版本通常为您提供更多功能,例如能够调用程序之类的东西。如果只需要 SQL 和存储过程,ODBC 应该可以工作。
【讨论】:
【参考方案5】:与其设置第二个盒子,不如看看 iSeries 的 PHP 连接器?我的大型机人员说在我们的 iSeries 上设置非常容易。
我们用 PHP 编写了一个简单的服务器,它从 DB2 数据中加载数据模型,对它们进行序列化,然后将它们返回给调用者。这种方法意味着只有另一个 PHP 应用程序可以使用该服务,但它只是在两端序列化对象并将其发送到管道中更快。
这是来自 IBM 的关于该主题的 PDF:http://i-seriesusergroup.org/wp-content/uploads/2006/09/PHP%20for%20i5OS%20NESDND.pdf
【讨论】:
【参考方案6】:的确,网络服务似乎是解决问题的好方法。避免使用完全独立的操作系统的一种方法是在 Java 的 AS400 工具之上用 Java 编写 Web 服务(顺便说一句,这些工具非常好)。这至少应该让您也可以在 OpenBSD 机器上运行您的服务层。
【讨论】:
【参考方案7】:第二个@John Downey,我已经通过 unixODBC 在 AS/400 上获得了使用 PHP 的连接。
检查您的 phpinfo() 以查看其中是否有 unixODBC。我不必在 SLES 10 上编译它。
【讨论】:
【参考方案8】:Web 服务几乎可以肯定是要走的路。我相信您已经想到了这一点,但是由于您在两面都使用 PHP,您可以通过使用 serialize() 来构建响应数据而不是构建正确的 XML 文档来简化一些事情。从长远来看,它不太灵活,但它可能会让您更快地启动和运行。
【讨论】:
以上是关于将 PHP 连接到 IBM i (AS/400)的主要内容,如果未能解决你的问题,请参考以下文章
将IBM i Client Access中的cwbdc.dll手动嵌入到控制台应用程序中