2008-08-03 55 views
30

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

从我所看到的IBM的DB2扩展和DB2软件只能在Linux下运行。我试着用IBM的所有软件编译扩展,甚至尝试过预编译的ibm_db2扩展,但没有运气。 IBM仅支持Linux,因此我在内核中启用了Linux仿真,但似乎没有任何帮助。

如果有人在OpenBSD下让所有东西本能地运行,那会很好,但是我想我可能需要做的是设置第二台服务器,运行安装了DB2的CentOS(最有可能通过ZendCore for IBM,因为它似乎为我做了这一切)和驱动程序,以便我可以设置一个小型事务服务器,我可以发布并获取我需要的DB2数据的JSON表示。

第二个选项看起来是否过分或者是否有其他人有更好的想法?

回答

17

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

如果你不能得到那个工作,选择安装一个Linux服务器上的Web服务可能是你能做的一切。

2

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

1

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

2

第二@约翰唐尼,我已经得到了连接与PHP在AS/400的unixODBC工作。

检查您的phpinfo(),看看unixODBC的是它可用。我没有编译它在SLES 10

1

事实上,web服务似乎是解决问题的好方法。避免使用完全独立的操作系统的一种方法是使用Java的AS400工具(这很好,顺便说一句)在Java中编写Web服务。这应该至少让你在OpenBSD盒子上运行你的服务层。

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

1

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

1

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

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

如果PDO不可用,因为我希望你使用的端口,并根据下面的链接有是PHP5-ODBC提供:

因此,假如你通过端口管理系统,也有你的指针。

希望有帮助!