1. ホーム
  2. linux

[解決済み] WGETはタイムアウトしますか?

2023-01-23 10:35:14

質問

Wgetを使ったcronで、以下のコマンドでPHPスクリプトを動かしています。

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

スクリプトはその処理を行うために最大で5-6分かかると思います。WGetはそれを待ち、必要な時間をすべて与えるのでしょうか、それともタイムアウトするのでしょうか?

どのように解決するのですか?

によると のマニュアルによると によると、タイムアウトに関連するオプションがいくつかあり、デフォルトで900秒の読み込みタイムアウトがあるそうです。



以下は、問題のオプションです。

-T seconds
--timeout=seconds

ネットワークのタイムアウトを秒単位で設定する 秒に設定します。 これは、次のように指定するのと同じです。 指定する --dns-timeout , --connect-timeout そして --read-timeout というように、すべて同時に を同時に実行します。



そして、その3つの選択肢に対して:

--dns-timeout=seconds

DNSルックアップのタイムアウトを秒単位で設定する 秒に設定します。

指定時間内に完了しないDNSルックアップは 指定された時間内に完了しない は失敗します。

デフォルトでは、DNS ルックアップのタイムアウトはありません。 DNS ルックアップのタイムアウトはありません。 システムライブラリによって実装されたものを除いて、DNS ルックアップのタイムアウトはありません。

--connect-timeout=seconds

<ブロッククオート

接続タイムアウトを秒単位で設定する 秒に設定します。

接続に時間がかかるTCP接続は を確立するのに時間がかかると、接続が中断されます。

デフォルトでは、接続のタイムアウトはありません。 タイムアウトはありません。 システムライブラリによって実装されたものです。

--read-timeout=seconds

<ブロッククオート

読み込み(および書き込み)タイムアウトを 秒秒に設定します。

の "time"は、アイドル時間を意味します。 このタイムアウトは、アイドル時間を指します。 ダウンロードのどの時点でも、データ ダウンロードのどの時点でも、指定された秒数以上データを受信しなかった場合 ダウンロードのどの時点でも、指定された秒数以上データを受信しなかった場合、読み取り は失敗し、ダウンロードが再開されます。

このオプションは、直接 ダウンロード全体の継続時間に直接影響するものではありません。 ダウンロードの期間には直接影響しません。



のようなものを使えばいいのでしょうが

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

は、スクリプトの持続時間より長い前にタイムアウトがないことを確認する必要があります。

(ええ、これはおそらく可能な限り最も残酷な解決策です ^^)