[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 メーリングリストの案内