• 締切済み

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

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"); ?> 宜しくお願いいたします。

みんなの回答

  • kircher
  • ベストアンサー率47% (11/23)
回答No.1

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