[PHP-users 34765] Re: sleep関数が復帰せずプロセスがダウンする

Eijun Kitamura eijun @ hal.ne.jp
2009年 9月 16日 (水) 03:15:45 JST


北村と申します。

若葉とか初心者とか名乗っても叩かれない、良い時代になりました。

さて、本題ですが、

Test_Sleep.phpの

> while($loop_condition){

は無限ループになっているように思いますが、これは意図的なものですか?

ログファイルが異常に大きくなってしまったとか。

あと、exec()の戻り値や標準エラーを取得すると、何か出てきませんか?

手元に実行環境が無いので、適当に気になる所を挙げてみました。

以上です。


Yuji KUBOTA さんは書きました:
> はじめて質問させて頂きます。PHPに関して日々勉強させて頂いております。(若葉マーク)
> 
> 以下に質問内容をまとめました。よろしくお願いします。
> 
> 1.質問事項
> プロセスがダウンする要因についてコメントを頂きたく、よろしくお願い申し上げます。
> 
> 2.症状
> 6項に示す二つのプログラムを用いてsleep関数の動作を確認したとろこ、3時間ほど経
> 過するとsleep関数が復帰せずTest_Sleep.phpのプロセスがダウンしてしまいます。
> 
> 3.エラー内容
> php.iniファイルにて
> error_reporting = E_ALL & ~E_NOTICE
> と設定しておりますが、PHPエンジンからのエラー通知はありません。
> 
> 4.発生条件・再現性
> 6項に示す環境で、100%再現しております。
> 
> 5.動作手順
> ブラウザ(firefox)を用いてTest_CreateSleepProc.phpを呼び出す。
> 
> 6.プログラム
> --- Test_CreateSleepProc.php ---
> <?php
> exec("php -f Test_Sleep.php > /dev/null &");
> ?>
> ---
> 
> --- 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");
> ?>
> ---
> 
> 6.利用環境
> ・OS:
> Fedora Core release 6 (Zod)
> 
> ・Webサーバ:
> Server version: Apache/2.2.6 (Unix)
> Server built:   Sep 18 2007 11:26:13
> 
> ・PHP:
> PHP 5.1.6 (cli) (built: Sep 18 2007 09:07:04)
> Copyright (c) 1997-2006 The PHP Group
> Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
> 
> ・php.ini:
> ;;;;;;;;;;;;;;;;;;;
> ; Resource Limits ;
> ;;;;;;;;;;;;;;;;;;;
> max_execution_time = 0     ; Maximum execution time of each script, in seconds
> max_input_time = 60     ; Maximum amount of time each script may spend parsing
> request data
> memory_limit = 1000M      ; Maximum amount of memory a script may consume
> 
> 以上
> 
> _______________________________________________
> 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 メーリングリストの案内