Zend Server CE 4.0.6 for Winを入れてみた
Zend Server CE(Community Edition)4.0.6をWindows環境に入れて、IBM i(AS/400)のDB2とゴタゴタやったので、メモしておきます。
■動作環境
- IBM i V5R4M0
- Windows XP SP3
- Zend Server CE 4.0.6 (PHP 5.2.11) for Windows
- DB2 Connect Personal Edtion V9.1 for Windows
DB2 Connectのセットアップ
- DB2ランタイムで躓き...
これは、結果論で分かったのですが、Zend Server(以下ZS)には、DB2のランタイムがバンドルされていて、ZSインストール時に導入されます。しかしランタイム版は”Unix,Linux,Windows”のDB2を対象としている様で、”DB2 for i”は対象外の様です。以下のエラーが投げられました。
---- 接続文字列 ---- 「DRIVER={IBM DB2 ODBC DRIVER};DATABASE=カタログ名;HOSTNAME=ホストIP;PORT=446;PROTOCOL=TCPIP;UID=ユーザー名;PWD=パスワード;」は接続出きません。 ---- db2_conn_errormsg()の内容 ---- [IBM][CLI Driver] SQL8002N Connect processing failed; a valid product license was not found. SQLSTATE=42968 SQLCODE=-8002
AS/400と同時提供されている”DB2 Connect Personal Edtion”を入れる必要がありました。
IBMよりCDが提供され入るので、32bit Windwos版のインストールを行ないます。
インストール自体は、フルインストールにして、特に難しいところはありません。
- カタログの作成
[スタート]→[プログラム]のDB2から、[セット・アップツール]→[構成アシスタント]を選び、カタログを構成します。
構成を追加するか?訪ねられるので”はい”を選びます。ウィザードを以下スナップショットの手順で、進めます。
ちなみにデータベース名は「WRKRDBDIREコマンド」で確認して、”*LOCAL”になっている項目です。
以下の設定が終わると、[管理ツール]の[データソース]でシステムDSNに、カタログが作成されています。
- db2cli.lstのバインド
DB2のコマンドウィンドウでcliのバインド事前にしておく必要があります。しておかないと、DB2接続で以下のエラーが発生しました。
------------------------------------------- [IBM][CLI Driver][AS] SQL0805N パッケージ "NULLID .SYSSH200" が見つかりませんでした。 SQLSTATE=51002 -------------------------------------------
■cliのバインド
※参考(https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.1.0/com.ibm.db2.luw.qb.dbconn.doc/doc/c0005595.html)
C:\Program Files\IBM\SQLLIB\BIN> db2 connect to カタログ名 user ユーザ名 using パスワード C:\Program Files\IBM\SQLLIB\BIN> cd ../bnd ※DB2 LUWの場合は以下を実行 C:\Program Files\IBM\SQLLIB\bnd> db2 bind @db2cli.lst blocking all grant public C:\Program Files\IBM\SQLLIB\bnd> db2 bind @db2ubind.lst blocking all grant public ※IBMiの場合は以下を実行 db2 bind @ddcs400.lst blocking all grant public (実行後に”NULLID”の中にSYSオブジェクトが作成される)
DB2クライアントのエンコーディングが、ローカル環境がデフォルトになるようで、DB2関数で返される結果が、SJISになって文字化けしました。以下のコマンドをDB2のコマンドウィンドウで実行して、エンコーディングをUTF-8(CCSID 1208)にします。
db2set db2codepage=1208 ---- 確認 ---- db2set -all
Zend Server CEのセットアップ
Zend.comより「Zend Server CE 4.0.6」のWindowsインストーラより導入します。
フルインストールをしないと、IBM系のExtension(ibm_db2,pdo_ibm)はインストールされないので、フルインストールします。最後に前述で入れたDB2 Connectについて、「既知のDB2 Clientがあるよ」と言われます。
- ZendEnablerConf.xmlの修正
”C:\Program Files\Zend\ZendServer\etc\ZendEnablerConf.xml”の先頭に壊れたデータが入っています。この壊れたデータを除去します。この壊れたデータの影響で、http://localhost:89/ZendServer/ の表示が500 Internal Server Error になります。id:satoruyoshidaさんのこちらの日記で解決させて頂きました。助かりました。
新しい管理用UIは、設定変更時のリスタートもその場で出来るなど、使い易くて良い感じです。
php.iniやhttpd.confを適宜直して、実行すればWindwos Zend Serverの出来上がり?
DB2関数の接続は、カタログ接続の場合は、i5と全く同等です。「*LOCAL」を使わずカタログ名にしておけば、そのままソースを変更する事なく動作します。以下の様な感じです。
<?php /* // 非カタログ接続 $database = 'CSC2008'; $user = 'name'; $password = '****'; $hostname = '192.168.xxx.xxx'; $port = 446; // WRKRDBDIREで確認。デフォルトの*DRDAは「446」 $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" . "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;"; $db = db2_connect($conn_string, '', ''); */ // カタログ接続 $conn_string = "CSC2008"; //カタログ名 $db = db2_connect($conn_string, 'name', '****');
しかし、「ibm_db2.i5_dbcs_alloc=1」を設定してやっても、i5だと半角カナが切れないのに、Windowsだと半角カナが切れてしまいます。(UTF-8で3バイトで認識されて、フィールドのバイト数にあたる文字数になってしまう)これは未解決のままです。
一応ベンチマーク
以前i5でやったベンチマーク同じ条件でやったら、若干遅くなりました。
■DB2関数
time index | ex time | % | |
Start | 1266922322.48437600 | - | 0.00% |
DB2 Start select | 1266922322.48439700 | 0.000021 | 0.00% |
DB2 End select | 1266922323.98632900 | 1.501932 | 23.22% |
DB2 Start insert | 1266922323.98635800 | 0.000029 | 0.00% |
DB2 End insert | 1266922328.55809400 | 4.571736 | 70.68% |
DB2 Start update | 1266922328.55812600 | 0.000032 | 0.00% |
DB2 End update | 1266922328.95244900 | 0.394323 | 6.10% |
Stop | 1266922328.95247100 | 0.000022 | 0.00% |
total | - | 6.468095 | 100.00% |
■PDO
time index | ex time | % | |
Start | 1266922241.96875100 | - | 0.00% |
PDO Start select | 1266922241.96878100 | 0.000030 | 0.00% |
PDO End select | 1266922243.73359700 | 1.764816 | 26.03% |
PDO Start insert | 1266922243.73362300 | 0.000026 | 0.00% |
PDO End insert | 1266922248.34333000 | 4.609707 | 67.98% |
PDO Start update | 1266922248.34335400 | 0.000024 | 0.00% |
PDO End update | 1266922248.74953300 | 0.406179 | 5.99% |
Stop | 1266922248.74956500 | 0.000032 | 0.00% |
total | - | 6.780814 | 100.00% |
先日行って来た、OS協議会のお話ですと、これからAS/400にもZend Serverがプリインストールされるみたいです。