2008-08-03 86 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提供:

因此,假如你通過端口管理系統,也有你的指針。

希望有幫助!