Edit report at http://bugs.php.net/bug.php?id=48280&edit=1
ID: 48280 Comment by: james dot mk dot green at gmail dot com Reported by: php at bouchery dot fr Summary: http stream timeout is doubled Status: Open Type: Bug Package: Streams related Operating System: Windows XP SP2 PHP Version: 5.2SVN-2009-12-22 Block user comment: N Private report: N New Comment: This remains a bug in 5.3.5 on Linux. Setting the timeout to 2 results in a 4s timeout, setting it to 4 results in an 8s timeout. Previous Comments: ------------------------------------------------------------------------ [2009-12-22 10:51:29] php at bouchery dot fr No, result is already : Code #1: Duration = 4 Code #2: Duration = 6 Code #3: Duration = 8 ------------------------------------------------------------------------ [2009-05-20 13:29:13] php at bouchery dot fr I did it on localhost and on a remote machine: sleep-flush.php <?php echo 'start'; flush(); sleep(20); echo 'sleep'; ?> sleep.php <?php sleep(20); echo 'sleep'; ?> ------------------------------------------------------------------------ [2009-05-20 12:59:15] j...@php.net And where are the sources for those server side scripts? ------------------------------------------------------------------------ [2009-05-14 11:59:39] php at bouchery dot fr Description: ------------ When I perform a HTTP timeout using "stream_context_create", "stream_set_timeout" or "default_socket_timeout", timeout is doubled. I did it on : - Windows XP SP2 + PHP-Cli 5.1.6 - Windows XP SP2 + PHP-Cli 5.2.9-2 - Debian 5 + PHP 5.2.0-8+etch13 (cli) Reproduce code: --------------- <?php $time = time(); // sleep-flush.php flush a text before sleeping 20 seconds $f = @fopen('http://localhost/sleep-flush.php', 'r'); if( $f !== false ) { stream_set_timeout($f, 2); $content = stream_get_contents( $f ); fclose($f); } echo 'Code #1: Duration = ', (time() - $time), "\n"; $context = stream_context_create(array('http' => array('timeout' => 3))); $time = time(); // sleep do not flush text before sleeping 20 seconds $f = @fopen('http://localhost/sleep.php', 'r', false, $context); if( $f !== false ) { $content = stream_get_contents( $f ); fclose($f); } echo 'Code #2: Duration = ', (time() - $time), "\n"; ini_set('default_socket_timeout', '4'); $time = time(); // sleep do not flush text before sleeping 20 seconds $f = @fopen('http://localhost/sleep.php', 'r'); if( $f !== false ) { $content = stream_get_contents( $f ); fclose($f); } echo 'Code #3: Duration = ', (time() - $time), "\n"; ?> Expected result: ---------------- Code #1: Duration = 2 Code #2: Duration = 3 Code #3: Duration = 4 Actual result: -------------- Code #1: Duration = 4 Code #2: Duration = 6 Code #3: Duration = 8 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=48280&edit=1