次のコマンドを使用して、Wgetを使用してcron経由でPHPスクリプトを実行しています。
wget -O - -q -t 1 http://www.example.com/cron/run
スクリプトの処理には、最大5〜6分かかります。WGetはそれを待って、必要なすべての時間を与えますか、それともタイムアウトしますか?
次のコマンドを使用して、Wgetを使用してcron経由でPHPスクリプトを実行しています。
wget -O - -q -t 1 http://www.example.com/cron/run
スクリプトの処理には、最大5〜6分かかります。WGetはそれを待って、必要なすべての時間を与えますか、それともタイムアウトしますか?
回答:
wgetのマニュアルページによると、タイムアウトに関連するいくつかのオプションがあります-そしてデフォルトの読み取りタイムアウトは900秒です-ですから、そうです、タイムアウトする可能性があると私は言います。
問題のオプションは次のとおりです。
-T seconds
--timeout=seconds
ネットワークタイムアウトを秒秒に設定します。これは、指定するのと同じです
--dns-timeout
、--connect-timeout
と--read-timeout
すべて同時に、。
そして、これらの3つのオプションについて:
--dns-timeout=seconds
DNSルックアップタイムアウトを秒秒に設定します。
指定された時間内に完了しないDNSルックアップは失敗します。
デフォルトでは、システムライブラリによって実装される場合を除いて、DNSルックアップにタイムアウトはありません。
--connect-timeout=seconds
接続タイムアウトを秒秒に設定します。
確立に時間がかかるTCP接続は中止されます。
デフォルトでは、システムライブラリによって実装される場合を除いて、接続タイムアウトはありません。
--read-timeout=seconds
読み取り(および書き込み)タイムアウトを秒秒に設定します。
このタイムアウトの「時間」とは、アイドル時間を指します。ダウンロードのいずれかの時点で、指定された秒数を超えてデータが受信されない場合、読み取りは失敗し、ダウンロードが再開されます。
このオプションは、ダウンロード全体の期間に直接影響しません。
私は次のようなものを使用すると思います
wget -O - -q -t 1 --timeout=600 http://www.example.com/cron/run
スクリプトの期間より前にタイムアウトがないことを確認する必要があります。
(ええ、それはおそらく可能な限り最も残忍な解決策です^^)
-t
オプションは、のエイリアスのようです--tries
。これは、再試行回数をnumberに設定します。;;; それはどんな種類のタイムアウトにも関係していないようですが、エラーが発生した場合にwgetがダウンロードを再試行する回数に関係しています-そしておそらくタイムアウトをエラーと見なしたくないでしょう、そしてスクリプトが再呼び出しされています。
--timeout
。おそらく、コマンドで基本認証を使用しているためです
デフォルトのタイムアウトは900秒です。別のタイムアウトを指定できます。
-T seconds
--timeout=seconds
デフォルトでは、20回再試行します。さまざまな試行を指定できます。
-t number
--tries=number
リンク:wgetmanドキュメント
あなたの質問でそれはPHPスクリプトだと言ったので、おそらく最良の解決策は単にスクリプトを追加することかもしれません:
ignore_user_abort(TRUE);
このようにして、wget
終了した場合でも、PHPスクリプトは少なくともmax_execution_time
制限を超えなくなるまで処理され続けます(iniディレクティブ:デフォルトで30秒)。
あたりとしてwget
anyayあなたは、そのタイムアウトを変更すべきではありませんUNIXマニュアルに従って 、デフォルトのwgetのタイムアウトは900秒(15分)で5-6分はあなたが必要とするはるかに大きいwhis、。