私は testResponse.php という名前の php ファイルを持っています。
<?php
sleep(5);
echo"go";
?>
今、私はこのように file_get_contents を使用して別のページからこのファイルを呼び出しています:
$start= microtime(true);
$opts = array('http' =>
array(
'method' => 'GET',
'timeout' => 1
)
);
$context = stream_context_create($opts);
$loc = @file_get_contents("http://www.mywebsite.com/testResponse.php", false, $context);
$end= microtime(true);
echo $end - $start, "\n";
出力は 5 秒を超えています。これは、タイムアウトが無視されたことを意味します... この投稿のアドバイスに従いました: stackoverflow.com/questions/3689371
しかし、ホスト名をパス (www.mywebsite.com/testResponse.php など) にすることはできず、www.mywebsite.com などのホスト名を直接指定することはできないようです。
だから私はこの目標を達成するために立ち往生しています:
制約付きでページ www.test.com/x.php のコンテンツを取得します。
- test.com が存在しないか、ページ x.php が存在しない場合、すぐには何も返されません
- ページは存在するが読み込みに 1 秒以上かかる場合は、中止します
- そうでなければ、ファイルの内容を取得します
編集:ちなみに、このページ(testResponse.php)をローカルサーバーから呼び出すとうまくいくようです。そうですね、タイムアウトに 2 を掛けます。たとえば、タイムアウトに 1 を指定すると、「2.0054645」のようなエコーが返されます。でも地元からだけ...