プロが教えるわが家の防犯対策術!

LWPを使って外部と通信するプログラムを書きました。
通常時は希望通り動くのですが、相手のサーバが落ちている場合に
エラーが戻るまで数分かかります。
->timeoutの設定も入れたのですがききません。
URL先が落ちているときに、すばやくエラーが戻るようにしたいのですが、
どうしたらよいでしょうか?

$server= "http://www.test.com";
$query{testid}="10";
$ua = new LWP::UserAgent;
$ua->timeout(10);
$request = POST($server, [%query]);
$res = $ua->request($request);
if (!$res->is_success) {
print "Error\n";
exit 1;
}

A 回答 (1件)

TCPのコネクション待ちでは、LWPのタイムアウトは効きません。

また、TCPコネクション後でも、サーバ側がレスポンスデータを小出しにチョロチョロ返す場合には、LWPのタイムアウトは効きません。

対策としては、LWPでALARMを掛けるか、LWPをやめてSocketレベルのプログラミングをするしかないようです。

前者は「LWP ALARM タイムアウト」、後者は「perl Socket タイムアウト connect」などで検索してやればネット上に情報があると思います。
    • good
    • 0
この回答へのお礼

LWPでALARMをかける方法で対処しました。
参考にして解決できました。
ありがとうございました。

お礼日時:2006/12/17 15:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!