PHP を IBM i (AS/400) に接続する
-
08-06-2019 - |
質問
私たちのウェブサイトに接続する必要がある今後のプロジェクトがあります (PHP5/Apache 1.3/OpenBSD 4.1
) を OS400 V5R3 を搭載した iSeries 上で実行されているバックエンド システムに接続し、そこに保存されているいくつかのテーブルにアクセスできるようにします。いくつかのチェックを行いましたが、いくつかの障害に遭遇しています。
私が見たところによると、IBM の DB2 拡張機能と DB2 ソフトウェアは Linux 上でのみ実行されます。IBM のすべてのソフトウェアで拡張機能をコンパイルしようとしましたが、プリコンパイルされた ibm_db2 拡張機能も試しましたが、うまくいきませんでした。IBM は Linux のみをサポートしているため、カーネルで Linux エミュレーションを有効にしましたが、何も役に立たないようでした。
OpenBSD ですべてをネイティブに実行できるようにすることに遭遇した人がいるなら、それは素晴らしいことですが、私がしなければならないのは、DB2 がインストールされた CentOS を実行する 2 番目のサーバーをセットアップすることです (すべてを実行できるように見えるため、おそらく ZendCore for IBM 経由で行うでしょう)これは私用です) とドライバーを使用して、投稿できる小規模なトランザクション サーバーをセットアップし、必要な DB2 データの JSON 表現を取得できるようにします。
2 番目のオプションはやりすぎだと思われますか、それとも他にもっと良いアイデアがある人はいますか?
解決
を使用してサーバーに接続することを検討しましたか? unixODBC?私の記憶が正しければ、IBM DB2 をサポートしており、OpenBSD でコンパイルします。チェックアウト http://www.php.net/odbc PHP 側の詳細については、を参照してください。
それがうまくいかない場合は、Linux サーバー上に Web サービスをセットアップするという選択肢しかないかもしれません。
他のヒント
2 番目のボックスをセットアップするのではなく、iSeries 用の PHP コネクタを検討してみてはいかがでしょうか。私のメインフレーム担当者は、iSeries でのセットアップは非常に簡単だと言いました。
DB2 データからデータ モデルをロードし、シリアル化し、呼び出し元に返す単純なサーバーを PHP で作成しました。このアプローチは、別の PHP アプリのみがサービスを利用できることを意味しますが、オブジェクトをシリアル化してパイプに送信するだけの方が、両端ではるかに高速です。
この件に関する IBM の PDF は次のとおりです。 http://i-seriesusergroup.org/wp-content/uploads/2006/09/PHP%20for%20i5OS%20NESDND.pdf
2番目の@John Downeyに、unixODBCを備えたAS/400上でPHPを操作するための接続を取得しました。
phpinfo() をチェックして、unixODBC が利用可能かどうかを確認してください。SLES 10 ではコンパイルする必要はありませんでした。
Web サービスが私にとっての答えになりそうです。PHP のドキュメントによれば、ODBC サポートをコンパイルする必要があるため、製品版では PHP の独自の特別なインストールをコンパイルして保守する必要はありません。
Web サービスが最適な方法であることはほぼ間違いありません。これについてはすでに考えたことがあると思いますが、両方の側で PHP を実行しているため、適切な XML ドキュメントを構築する代わりに、serialize() を使用して応答データを構築することで、作業を少し短縮できます。長期的には柔軟性は低くなりますが、おそらくより早く立ち上げて実行できるようになるでしょう。
確かに、Web サービスは問題を解決する優れた方法のように思えます。完全に別個の OS を用意することを避ける 1 つの方法は、Java 用の AS400 ツール (ちなみに、これは非常に優れています) の上に Java で Web サービスを作成することです。これにより、少なくとも OpenBSD ボックス上でサービス層を実行できるようになります。
標準の ODBC ドライバーを使用して直接接続することもできます。IBM バージョンでは通常、プログラムを呼び出すことができるなど、より多くの機能が提供されます。SQL とストアド プロシージャのみが必要な場合は、ODBC が機能するはずです。
PHP から PDO を使用してみませんか?OpenBSD で利用可能なすべてのポートの公開リストを見つけることができなかったので、ここでは推測する必要がありますが、FreeBSD、NetBSD などのポートは存在します。もしかしたらあなたも幸運に恵まれるかもしれません。
(OpenBSD が FreeBSD のポーターズ ハンドブックにリンクしているとしても、 フレッシュポート あなたのシステムには適用できませんか?)
PDO が利用できない場合、ポートを使用することを期待しているため、次のリンクによれば php5-ODBC が利用可能です。
したがって、ポートを通じてシステムを管理していると仮定すると、指針が得られます。
お役に立てば幸いです!