[PHP-users 34775] Re: sleep関数が復帰せずプロセスがダウンする
MAEDA Katsuyuki
kei @ nanet.co.jp
2009年 9月 17日 (木) 13:35:46 JST
前田です。
同じ環境を作れないので、確認できないのですが、Apache自身の
workerプロセスが終了するときに、シグナルが飛んできて一緒に
終了しているのでは無いですか?
MaxRequestsPerChild の設定に依存しますが、デフォルト値は
10000となっており、10000リクエスト毎にサーバープロセスは
終了します。
pcntl_signalで、シグナルハンドラ設定してログを書かせてみれば
判断できると思います。
飛んでくるシグナルを無視することで、プロセスが終了することは
なくなりますが、もし、子プロセスが長期間待機する性質のもので
あれば、CLI等で作ったデーモンプロセスを用意するほうがベター
だと思います。
複数の異なるかも知れない親からforkされるプロセス群を安全に
管理するのは大変だからです。
シグナルを無視するようにしたとして、Apache自体を再起動した
際に、各々の子プロセスの後始末をきれいにやったり、安全な排他
処理を用意したりするのは気を使います。
--
MAEDA 'kei' Katsuyukii <maeda.katsuyuki @ gmail.com>
「終わらないプロジェクトはない。終わっちゃうプロジェクトはあるけど。」
PHP-users メーリングリストの案内