[PHP-users 15932]Re: cron実行時のみのタイムアウト。

Y.Watanabe yuw @ msj.biglobe.ne.jp
2003年 6月 13日 (金) 15:45:20 JST


わたなべです。

NIC wrote on 2003/06/13 14:48
with Subject: [PHP-users 15930] Re: cron実行時のみのタイムアウト。

>> もっと短い時間(例えばループを100回とか)でも、ファイルは生成されませんか?
>
>スクリプトのループ回数のみを変えた場合ですと、100では実行完了しましたが
>1000からはループ途中で終了してしまっていました。
>
>ただ、ループ中の
>
>   echo $i."<br />\n";
>
>という標準出力の部分のみをコメントアウトしたら、
>
>ループ回数 : 10000000
>実行時間   : 73 秒
>
>と、長時間の実行にもしっかりと応じてくれました。
>何故なのかは全く分からないのですが…cron等で実行させる場合にはechoや
>print等の標準出力を使用すると、途中でタイムアウト(時間に関わらない気がし
>ますが…)してしまうようです。

というあたりからの推測とヒントっす。

LINUX(というかUNIX一般)のcron機構は、cronで実行されるプログラムが
なんらかの標準出力を吐くと、それの内容を全てユーザーにメールするように
なっています。
  http://www.linux.or.jp/JM/html/cron/man8/cron.8.html

お話のスクリプトだと、標準出力される内容は全部で10メガ前後という
ことになります。そんな巨大な内容をメールしようとすれば
メール機構のほうがトラブりそうorなんらかの拒否反応を
示したとしても不思議じゃないですよね。


(1)以下のように 2>&1 にしてみるとか。
0 * * * * * /usr/local/bin/php -q /home/hoge/public_html/timeout.php  2>&1

  (↑ phpのCLIに-qオプションなんてありましたっけ?)

(2)cron 標準出力 メール といったキーワードでぐぐってみるとか。

(3)問題のスクリプトがcronで動くときに、
   /var/log/ 配下のログファイル群のどれかになんかおかしな
   エラーメッセージが出てないか探ってみるとか。





PHP-users メーリングリストの案内