WGETはタイムアウトしますか?


83

次のコマンドを使用して、Wgetを使用してcron経由でPHPスクリプトを実行しています。

wget -O - -q -t 1 http://www.example.com/cron/run

スクリプトの処理には、最大5〜6分かかります。WGetはそれを待って、必要なすべての時間を与えますか、それともタイムアウトしますか?

回答:


145

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 0を設定すると、無期限に待機しますか?
[賛成]をクリックします2010

4
この-tオプションは、のエイリアスのようです--tries。これは、再試行回数をnumberに設定します。;;; それはどんな種類のタイムアウトにも関係していないようですが、エラーが発生した場合にwgetがダウンロードを再試行する回数に関係しています-そしておそらくタイムアウトをエラーと見なしたくないでしょう、そしてスクリプトが再呼び出しされています。
パスカルマーティン2010

31
--timeout = 0はタイムアウトを無効にします
MiniScalope 2010年

私はおそらく地球上の人ですが、ubuntu 16の場合、wgetはの値を無視します--timeout。おそらく、コマンドで基本認証を使用しているためです
Kirill Oficerov

35

デフォルトのタイムアウトは900秒です。別のタイムアウトを指定できます。

-T seconds
--timeout=seconds

デフォルトでは、20回再試行します。さまざまな試行を指定できます。

-t number
--tries=number

リンク:wgetmanドキュメント


7

あなたの質問でそれはPHPスクリプトだと言ったので、おそらく最良の解決策は単にスクリプトを追加することかもしれません:

ignore_user_abort(TRUE);

このようにして、wget終了した場合でも、PHPスクリプトは少なくともmax_execution_time制限を超えなくなるまで処理され続けます(iniディレクティブ:デフォルトで30秒)。

あたりとしてwgetanyayあなたは、そのタイムアウトを変更すべきではありませんUNIXマニュアルに従って 、デフォルトのwgetのタイムアウトは900秒(15分)で5-6分はあなたが必要とするはるかに大きいwhis、。


7

バージョン1.14より前は、バグのためにhttps経由でダウンロードする場合、wgetタイムアウト引数が順守されていませんでした。


くそー!CentOS6はwget1.12に同梱されていますが、httpsリンクでも同じ問題が発生しました
daisy

まったく同じエラーが発生しています。証明書の有効期限が切れたhttpsリンクでWgetが停止しました!
ディランB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.