将PHP连接到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服务。
似乎Web服务将成为我的答案。根据PHP文档,在生产环境中,我宁愿不必编译并维护自己的特殊PHP安装,因为需要编译ODBC支持。
几乎可以肯定,Web服务是必经之路。我确定我们已经想到了这一点,但是由于我们都在使用PHP,因此可以使用serialize()来构建响应数据,而不是构建适当的XML文档,从而稍微简化一下事情。从长远来看,它的灵活性较差,但可能会使我们更快地启动并运行。
其次@John Downey,我已经获得了在unixODBC上在AS / 400上使用PHP的连接性。
检查phpinfo()来查看unixODBC是否可用。我不必在SLES 10上进行编译。
确实,Web服务似乎是解决问题的好方法。避免使用完全独立的OS的一种方法是在Java的AS400工具(顺便说一句,很好)上用Java编写Web服务。那至少也应该让我们在OpenBSD框上运行服务层。
而不是设置第二个框,为什么不查看适用于iSeries的PHP Connector?我的大型机人员说,在这里在我们的iSeries上安装非常容易。
我们用PHP编写了一个简单的服务器,该服务器从DB2数据加载数据模型,对其进行序列化,然后将其返回给调用者。这种方法意味着只有另一个PHP应用程序可以使用该服务,但是两端串行化对象并将其发送到管道两端要快得多。
这是IBM提供的有关该主题的PDF:http://i-seriesusergroup.org/wp-content/uploads/2006/09/PHP%20for%20i5OS%20NESDND.pdf
我们也可以使用标准的ODBC驱动程序直接连接。 IBM版本通常为我们提供更多功能,例如能够调用程序之类的东西。如果只需要SQL和存储过程,则ODBC应该可以工作。
为什么不从PHP使用PDO?我必须在这里猜测,因为我无法找到可用于OpenBSD的所有端口的公共列表,但是由于有一个用于FreeBSD,NetBSD等的端口,也许我们也很幸运。
(我想即使OpenBSD链接到FreeBSD的搬运工手册,Freshports也不适用于系统吗?)
如果PDO不可用,并且由于我希望我们使用端口,并且根据以下链接,则可以使用php5-ODBC:
http://www.openbsd.org/pkg-stable40.html
因此,假设我们通过端口管理系统,那么这里就有指针。
希望对我们有所帮助!