次のコードはPHPで実行されます
shell_exec('wget -q -T 0 -b -O "'.dirname(__FILE__).'/logs/log.txt" "'.$_SERVER['SERVER_NAME'].'/my/script.php" > /dev/null 2>&1');
数時間後、スクリプトは理由もなく停止します。log.txtにも、apacheエラーにもエラーはありません。これらの行は、そのような動作を防ぐ必要があります。
session_write_close();
ini_set('max_execution_time',0);
set_time_limit(0);
またecho(' '); flush();
、出力がないためにapacheがスクリプトを強制終了しないようにするために時々追加しました(apacheエラーログに表示されました)。
興味深いヒントは、ignore_user_abort(1);
最初に追加すると、スクリプトが停止しないことです。
スクリプトを終了して出力を収集する方法は他にもありますが、私が探しているのは、タイムアウトが0に設定されている場合でも、wgetがダウンロードを放棄する理由です。