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

时间:2008-08-03 14:03:29

标签: php database odbc db2 ibm-midrange

我有一个即将开展的项目,我需要将我们的网站(PHP5/Apache 1.3/OpenBSD 4.1)连接到运行在OS400 V5R3的iSeries上的后端系统,以便我可以访问存储在那里的一些表。我已经做了一些检查,但遇到了一些障碍。

据我所知,IBM的DB2扩展和DB2软件只能在Linux下运行。我已经尝试使用IBM的所有软件编译扩展,甚至尝试了他们的预编译ibm_db2扩展而没有运气。 IBM只支持Linux,所以我在内核中启用了Linux仿真,但这似乎没有任何帮助。

如果有人遇到过在OpenBSD下本地运行的一切都很棒,但我认为我可能要做的是设置第二台运行CentOS且安装了DB2的服务器(很可能是因为它似乎是IBM的ZendCore)为我做这一切)和驱动程序,以便我可以设置一个我可以发布的小型事务服务器,并获得我需要的DB2数据的JSON表示。

第二个选项是否有点矫枉过正,还是其他人有更好的想法?

8 个答案:

答案 0 :(得分:18)

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

如果无法解决问题,可以选择在Linux服务器上设置Web服务。

答案 1 :(得分:4)

为什么不调查PHP Connector for iSeries?而不是设置第二个框?我的大型机家伙说,在我们的iSeries上设置非常容易。

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

对于第二个@John Downey,我已经与unixODBC在AS / 400上使用PHP连接。

检查你的phpinfo(),看看unixODBC是否可用。我没有必要在SLES 10上编译它。

答案 4 :(得分:1)

Web服务几乎肯定是要走的路。我相信你已经想到了这一点,但既然你在双方都在做PHP,你可以通过使用serialize()来构建你的响应数据,而不是构建一个合适的XML文档。从长远来看,它不太灵活,但它可能会让你更快地运行起来。

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

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

(我想即使OpenBSD链接到FreeBSD的porter手册,Freshports也不适用于你的系统?)

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

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

希望有所帮助!