fopen で HTTP タイムアウト指定の不思議な挙動
<?php $context = stream_context_create(array('http'=>array('method'=>'GET','timeout' => 4))); $start = microtime(true); $fp = @fopen('http://{sleep(60)するだけの php スクリプト}.php', 'rb', false, $context); $end = microtime(true); var_dump($end - $start);
タイムアウト秒数を 4 にしてる。
サーバーにそもそもつながらないとかの場合は、指定秒数で処理が返ってくる。
上みたいに繋がりはするけど応答が返ってこない場合は、指定秒数の 2 倍の時間かかって返ってくる。