[PHP-users 34785] Re: sleep関数が復帰せずプロセスがダウンする
二川 淳
2kawa @ attract.co.jp
2009年 9月 21日 (月) 08:43:00 JST
二川と申します。
親プロセスの停止・リスタート時の挙動は、OSの仕様に係らず
当然ながら各プログラムの実装が優先します。
apacheの場合、コンフィギュレーションの再読み込み等が行われる為、
その内容を子プロセスに反映させる必要があることから、
一度子プロセスをkillする動作をする様です。
詳しくは以下を参照ください。
http://httpd.apache.org/docs/2.0/ja/stopping.html
Yuji KUBOTA さんは書きました:
> 皆様
>
> この度はお世話になっております。久保田と申します。
>
> PHPプログラムのプロセスがダウンする原因について、皆様より頂いたコメントおよび私
> の方で再度調べた結果を以下にまとめました。
> (常駐プログラムの実現方法に関しては、別途整理させて下さい)
> まだ、疑問点が残っております。3項に示しましたので、コメントを頂けると助かります。
>
> 3.疑問点
> Q1:UNIX系OSのプロセス管理では、親プロセスが先に死ぬと子プロセスはinitプロセス
> の養子になるだけで、子プロセスも一緒に死なないと理解しております。
>
> [参考ホームページ]
> http://japan.zdnet.com/reference/solaris/story/0,3800077752,20365855,00.htm
>
> と言う事は、今回のケースにおいて、Workerプロセスの再起動(一時的に死ぬ)によりプ
> ロセス(プログラムA)はダウンする必要はないと考えます。
> 現象と逆の結果になってしまいます。
> また、プログラムXをtelnet端末(rootアカウント)から起動しtelnet端末ログアウト後
> (親プロセスが死んだ状態)もプロセス(プログラムA)はダウンする事なく動作し続け
> ております。
> 理屈がもう一歩通らず、何かまだ理解が足りないようです。
> なぜ、Workerプロセスの再起動で、子プロセスであるプロセス(プログラムA)がダウン
> する必要があるのでしょうか。
> HUPシグナルが伝搬される仕様(OSまたはPHP)なのでしょうか。
> どなたか教えて頂けないでしょうか。
>
> Q2:HUPシグナルは00:02に送信されていて、プロセスダウンが00:10に発生しておりま
> す。このタイムラグは何を意味するのでしょうか。
>
> Q3:HUPシグナルはPID 22377のhttpdに送信されております。しかし、ps結果では当該
> プロセスの起動時間に変わりません。当該プロセスは再起動していないと言う事でしょうか。
> root 22377 0.0 0.4 32452 15372 ? Ss Sep13 0:12 /usr/sbin/httpd
>
> [ご参考]
> ・プログラムX
> --- Test_CreateSleepProc.php ---
> <?php
> exec("php -f Test_Sleep.php > /dev/null &");
> ?>
> ---
>
> ・プログラムA
> --- Test_Sleep.php ---
> <?php
> $loop_condition = true ;
> $loop_cnt = 0 ;
> while($loop_condition){
> try {
> $ret = sleep(10);
> if ($ret != 0) {
> error_log(__FILE__.' '.__LINE__." sleepエラー発生:".$ret."\n", 3,
> "./log/test_sleep.log");
> }
> } catch (Exception $e) {
> $logger->fatal(__FILE__.' '.__LINE__.' プロセススリープ時に例外発生:'.$e) ;
> }
> $loop_cnt++ ;
> error_log(__FILE__.' '.__LINE__." sleep[".$loop_cnt."]\n", 3,
> "./log/test_sleep.log");
> }
> error_log(__FILE__.' '.__LINE__." プロセス終了:".$loop_condition."\n", 3,
> "./log/test_sleep.log");
> ?>
> ---
>
> 以上
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
>
>
PHP-users メーリングリストの案内