将 PHP 连接到 IBM i (AS/400)

问题描述 投票:0回答:9

我有一个即将进行的项目,其中我需要将我们的网站 (

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 表示形式。

第二个选项似乎太过分了,还是其他人有更好的想法?

php database odbc db2 ibm-midrange
9个回答
18
投票

您是否考虑过使用 unixODBC 连接到服务器?如果我没记错的话,它支持 IBM DB2 并在 OpenBSD 上编译。有关 PHP 方面的更多信息,请查看 http://www.php.net/odbc

如果您无法做到这一点,那么您所能做的可能就是在 Linux 服务器上设置 Web 服务。


4
投票

与其设置第二个盒子,为什么不研究 iSeries 的 PHP 连接器?我的大型机人员说,在我们的 iSeries 上进行设置非常容易。

我们用 PHP 编写了一个简单的服务器,它从 DB2 数据加载数据模型,序列化它们,然后将它们返回给调用者。这种方法意味着只有另一个 PHP 应用程序可以使用该服务,但两端的速度要快得多,只需序列化对象并将其发送到管道中。

这是来自 IBM 的关于该主题的 PDF:http://i-seriesusergroup.org/wp-content/uploads/2006/09/PHP%20for%20i5OS%20NESDND.pdf


2
投票

第二个@John Downey,我已经获得了在 AS/400 上使用 unixODBC 来使用 PHP 的连接。

检查你的 phpinfo() 以查看 unixODBC 是否可用。我不必在 SLES 10 上编译它。


2
投票

看起来网络服务将是我的答案。在生产环境中,我不想编译和维护我自己的 PHP 特殊安装,因为根据 PHP 文档,需要编译 ODBC 支持。


1
投票

网络服务几乎肯定是最佳选择。 我相信您已经想到了这一点,但是由于您在两侧都使用 PHP,因此您可以通过使用 serialize() 来构建响应数据而不是构建适当的 XML 文档来简化一些事情。 从长远来看,它的灵活性较差,但它可能会让您更快地启动和运行。


1
投票

确实,网络服务似乎是解决该问题的好方法。 避免使用完全独立的操作系统的一种方法是在 Java 的 AS400 工具之上用 Java 编写 Web 服务(顺便说一句,这非常好)。 这至少应该让您也可以在 OpenBSD 机器上运行服务层。


1
投票

您也可以使用标准 ODBC 驱动程序直接连接。 IBM 版本通常为您提供更多功能,例如能够调用程序等。如果您只需要 SQL 和存储过程,则 ODBC 应该可以工作。


1
投票

为什么不使用 PHP 中的 PDO?我必须在这里猜测,因为我找不到 OpenBSD 可用的所有端口的公开列表,但由于有一个用于 FreeBSD、NetBSD 等的端口。也许你也很幸运。

(我猜即使 OpenBSD 链接到 FreeBSD 的搬运工手册,Freshports 并不适用于你的系统?)

如果 PDO 不可用,并且因为我希望您使用端口,并且根据以下链接,可以使用 php5-ODBC:

因此,假设您通过端口管理系统,那就有您的指针。

希望有帮助!


0
投票

graetou 也可以使用标准 ODBC 驱动程序直接连接。 IBM 版本通常为您提供更多功能,例如能够调用程序等。如果您只需要 SQL 和存储过程,则 ODBC 应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.