关于数据库:将PHP连接到IBM i(AS / 400)

关于数据库:将PHP连接到IBM i(AS / 400)

Connect PHP to IBM i (AS/400)

我有一个即将进行的项目,其中我需要将我们的网站(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 Connector?我的大型机人员说,在这里在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上进行编译。


似乎Web服务将成为我的答案。根据PHP文档,在生产环境中,我宁愿不必编译并维护自己的特殊PHP安装,因为需要编译ODBC支持。


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

(我想即使OpenBSD链接到FreeBSD的搬运工手册,Freshports也不适用于您的系统吗?)

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

  • http://www.openbsd.org/pkg-stable40.html

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

希望有帮助!


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


确实,Web服务似乎是解决问题的好方法。避免使用完全独立的OS的一种方法是在Java的AS400工具(顺便说一句,很好)上用Java编写Web服务。那至少也应该让您在OpenBSD框上运行服务层。


Web服务几乎肯定是必经之路。我确定您已经想到了这一点,但是由于您都在使用PHP,因此可以使用serialize()来构建响应数据,而不是构建适当的XML文档,从而稍微简化一下事情。从长远来看,它的灵活性较差,但可能会使您更快地启动并运行。


推荐阅读