-PR-
締切済み

PHPでのタイムアウト設定(HTTPコネクション)

  • 困ってます
  • 質問No.73229
  • 閲覧数339
  • ありがとう数12
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 0% (0/1)

PHPで、あるwebサイト(仮にfoo.comとします)にアクセスして情報を取ってくる、という
スクリプトを書いています。
この際、foo.comが落ちている等の理由でアクセスできなかった場合の
タイムアウトを作りたいのですが、set_time_limitを使ったところ
うまくいきません。下記の例で行けば、
「5秒以内にfoo.comへコネクトし、データを512バイト読み込み終わらなければ
 スクリプトを強制終了する」
ということを考えているのですが、現実にはhttpを見に行ったまま
5秒以上たって、終了されません。
何かうまい方法を教えていただけませんでしょうか?
なお、バージョンはPHP4.0.4pl2, OSはredhat6.2Jです。

以下に、スクリプトを書きます。

<?
set_time_limit(5);
error_reporting(0);
$file = fopen("http://foo.rom", "r");
$line = fread($file, 512);
fclose($file);
print("$line");
?>

宜しくお願いいたします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル7

ベストアンサー率 47% (11/23)

PHPのマニュアルを見てみますと、「 fsockopen() 」という関数が
あるので、それを使ったほうがいいかもしれません。
これですと、ずばりタイムアウトするまでの時間を秒単位で指定できます。
マニュアルのサンプルですと、こんなのでした。

$fp = fsockopen ("foo.com", 80, &$errno, &$errstr, 5);
if (!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
fputs ($fp, "GET / HTTP/1.0\r\n\r\n");
while (!feof($fp)) {
echo fgets ($fp,4096);
}
fclose ($fp);
}


このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-

特集


抽選で合計100名様にプレゼント!

ピックアップ

ページ先頭へ