備考:
1. php から ODBC 接続する方法として PDO を使っています。PDO を有効にするには、php.ini の以下の行を追加し、Web サーバを再起動しておく必要があります。
extension=php_pdo.dll
extension=php_pdo_odbc.dll
2. PDO ではシステム DSN を指定する必要があるため、SequeLink ドライバを指定して適当な名前のシステム DSN を事前に登録しておく必要があります。
php ソースの記述例は次のとおりです。
//$dbh = new PDO ("odbc:DSN=データソース名;UID=ユーザー名;PWD=パスワード"); try { $pdo = new PDO("odbc:dsn=test;host=127.0.0.1", "Admin", "somePWD"); $sql = "select * from testdb where recno=1"; $rec = $pdo->query($sql); //レコードセットから特定の列を取りだすときは bindColum を使用 $rec->bindColumn("ID", $ID); $rec->fetch(); echo $ID; } catch(PDOException $e){ var_dump($e->getMessage()); }
上記のような php スクプトを連続操作を実行すると、ODBC ドライバの動作が不安定になることがわかりました。
返されたエラーは次のとおりです。
1) Session refused by service, connection closed.
このエラーはサーバプロセスが接続要求を受理できなかったときに発生します。
このエラー発生後、FileMaker Pro ファイルを閉じたり、一度 Windows をログオフしたりしたのですが、それでも現象が改善せず、マシンを再起動することによってようやく復旧しました。
2) Maximum number of sessions reached.
このエラーは設定済のアクティブセッション数を超過した場合に発生し、その後のクライアント接続要求は拒否されてしまうようです。
このエラー発生後、ファイルメーカー Pro ファイルを一度閉じることによって復旧しました。
以下のサイトにエラーコードの一覧が用意されていますので、その他のエラー内容と原因も参照できます。
SequeLink のエラーメッセージ一覧
ただ、これだけ動作が不安定だと、ODBC 接続実験としては面白いですが、とても運用レベルには耐えられないという印象です。また、CD に付属の SequeLink は 64bit 対応ではないため、別途購入する必要がある(しかも金額不明)というのも利用者を遠ざける原因になってしまうかもしれません。
SequeLink® 5.5 Client for ODBC 製品紹介ページ
ODBC 接続に関する続きの記事はこちら:
API 別/サーバ別FileMaker カスタムWebパフォーマンス比較