我有一个即将进行的项目,其中我需要连接我们的网站(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 表示形式。

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

有帮助吗?

解决方案

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

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

其他提示

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

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

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

其次@John Downey,我已经通过unixODBC 连接到在AS/400 上使用PHP。

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

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

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

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

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

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

(我猜尽管 OpenBSD 链接到 FreeBSD 的搬运工手册, 弗雷什波特 不适用于您的系统?)

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

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

希望有帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top