[PHP-users 25016] Re: OCI8 関数使用時にHTTPDプロセスのファイルディスクプリタが開放されない

Seiji Masugata s.masugata @ digicom.dnp.co.jp
2005年 3月 22日 (火) 15:01:29 JST


こんにちわ、桝形です。

> 返信が遅くなってしまい、申し訳ありません。

とんでもないです。
この件に関して気になっていたので返信して頂き感謝です。


> ご指摘いただいた方法、
>  1.PHPのバージョンを最新(PHP 5.0.4RC1 or PHP 4.3.11RC1)とする
>  2.ApacheのMaxRequestsPerChildを低くする
>  3.ソースのocilogoffの条件付コンパイル部分(#if 0)を有効にする
> のうち、2番目の方法について、試してみました。
> 
> MaxRequestsPerChildを小さくした場合も、ファイルディスクプリタが
> 溜まっていく動作は変わりません。
> しかし、ファイルディスクリプタの数がMaxRequestsPerChildで
> 設定した値に達した際に、httpdプロセスが再起動され、それと同時に
> ファイルディスクリプタも開放されているようです。

やっぱり。。。それがoci8関数の仕様なんでしょうかね。
> > (RSHUTDOWNではなくてMSHUTDOWNっぽい)


CGI(or CLI)版では動作原理的に問題が無いのかなぁ。。。と
いう気がしてます(確認してませんけど)。

# putenvで環境変数を定義しまくると、Apacheのプロセスが落ちたり
# するので更に微妙な感じ。> oci8
# 
# http://bugs.php.net/bug.php?id=27620
# http://bugs.php.net/bug.php?id=30117


> MaxRequestsPerChildを1にした場合、DB接続を2回以上行っている
> ソースでは不具合が出るかとも思ったのですが、そのようなことも
> 無く、正常に処理が行えています。

MaxRequestsPerChildは子プロセスが何回処理をしたら子プロセスの
再起動を行うか。。。の定義(のはず)なので、DBコネクション数
とはアマリ関係がないのかと。。。


(根本的解決ではありませんが)とりあえず解決できてヨカッタすね。

-- 
Seiji Masugata<s.masugata @ digicom.dnp.co.jp>




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