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