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