[PHP-users 17525]Re: オラクルDBタイムアウトしたい

Kazumasa Gotoh kgotoh @ cic-kk.co.jp
2003年 8月 27日 (水) 08:34:26 JST


From: "kawate yukiyo" <kawate @ katom.kdg.co.jp>
Date: Tue, 26 Aug 2003 14:33:02 +0900

> 角さんに、オラクルのプロファイルを利用して
> 接続を切る方法を教えていただきました。
> (ありがとうございます。)
> ここで、また疑問なんですが、PHP側からはなすすべは
> ないのでしょうか。

PHP と Oracle の接続の関係と仕掛けを考えれば、難しいという
ことがわかるかと思います。

PHP プログラムは DB セションを保持して Oralce の応答を待って
wait いるだけですから、Oracle 側が離してくれないと、この場合は
どうしようもありません。

PHP の Oracle 接続自身は Oralce の OCI 関数を使って実装されて
いるので、OCI 自身に DB セションを開くときにタイムアウト値を
設定できる機能があれば、「PHP プログラム」ではなく、「PHP 自身」
に対してその機能をあなたが実装することは不可能ではありませんが、
私は OCI 自身にそのような機能があるかどうかは知りません。

じゃぁ、PHP に拘らないとすれば、そのような場合に普通はどうするかと
言えば、Oracle 接続プロセス/スレッドと処理本体を分けた実装を
行い、それぞれのプロセス/スレッドのデータの受け渡しはプロセス/
スレッド間通信を使う。そして中断を行いたい場合は処理本体プロセス
から Oracle 接続プロセス/スレッドにシグナルなどを送りその
プロセス/スレッド自身を殺す形になるでしょう。

PHP にもスレッド関数はあるようですから、あるいは PHP プログラムでも
上記と同様な事ができるかも知れません。

しかし、私はそのような機能が必須の場合には、PHP よりも Servlet/JSP
の方が処理が容易なような気がします。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
(株) セントラル情報センター
                             後藤和政    kgotoh @ cic-kk.co.jp


PHP-users メーリングリストの案内