夏休みだというのに久々にPHPのプログラムを書いている。 xoopsで動いている同窓会サイトのデータベースは夏休みしか止められない、という単純な理由。 それにしてもxoopsが日々進化しているのはよいとしても、久々にPHP書くとずいぶんいろんなことを忘れている。SQLのDBMSによる違いとか。 さてこのモジュールは、ただでさえ個人情報管理が大変な条件なのに、さまざまな変則的なEUCを求められる住所管理業務において、ファイヤーウォールが厳しい大学事務と会員用Webサーバのデータを連携するために、Windows2003+Apache+MySQL+Access(JET)+PHP+xoops,etc…という環境で稼動するというちょっとした変わり者。 技術的には何の問題もないのだけれど、例の個人情報管理法のおかげで、事務局運営上、名簿情報は公開していない、が内部的には管理は続けていかないとならない、というジレンマもある。 つまり事務の人、約1名しか使わないプログラムを、ひたすら何日もかけて書いたりすることもある。 もちろん、将来的に多くの会員ユーザが利用する可能性が高いから、ということなのだけれども。 さて、技術的余談。AccessやMSDEのデータベース(JET)はPHPであってもWindows上のPHPであれば、COM経由で利用できる。 クラスはこんな感じ。 $Conn = new COM(“ADODB.Connection”); $RS = new COM(“ADODB.Recordset”); ConnectionStringsをASPと同じようにこんな感じで書いてやれば動く。 $ConnStr = “Driver={Microsoft Access Driver (*.mdb)};password=”.$MDB_PASS.”;DBQ=”.realpath($MDB_PATH); $Conn->Open($ConnStr); $RS->Open ( $SQL, $Conn, 3); ちなみにRecordsetオブジェクトのOpenメソッドは、引数指定もOKで、3番目の「3」というパラメータは動的カーソルといって、レコードの件数を数えたいときに使う。通常は指定しなくてよい(Readonlyでロックしないし高速)。…それにしてもヘッダにしか書かれていないような、こんな細かな仕様まで問題なく異環境で動いてしまうCOMはえらい。もちろん子供になってるFieldsオブジェクトなども全部動く。 ところで、こういうASP+MDB的なWebプログラムをPHP+MySQL+MDB/MSDE環境で動かしたいという需要は業務アプリなどにはよくあると思うんだけど、意外とサンプルとかはないんだよね。 LAMPな人々はMicrosoftがらみの技術であるというだけで否定してかかるけど、実際にはそこまで潔癖にはなれないと思うんだけど、どうなんでしょうね?ASPで動いている海外のショッピングサイトなどもまだまだたくさんあるし…。 ASP+JETを完全にやめるとしても、移行期間のテクノロジとしては必要だと思うんだけど。 もし需要があるならボケないうちに、ドキュメントなどを残していこうかとは思います…。