|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull Requests
Pull requests:
HistoryAllCommentsChangesGit/SVN commits
[2019-07-29 22:43 UTC] calvet dot thomas at gmail dot com
[2019-09-17 13:44 UTC] nikic@php.net
[2019-09-17 13:44 UTC] nikic@php.net
-Status: Open
+Status: Closed
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 21:00:02 2025 UTC |
Description: ------------ Hello, I am using file_get_contents to get a url on a web server (apache 2.4). I am using a stream context to specify the timeout. 1) The script will wait as much as twice the timeout specified. 2) If it gets an anwser between the specified timeout and twice this timeout, although it waited for the answer, it will still fail with a warning. This was done on php versions : 7.2.3/Windows, 7.2.4/Debian 9.4 5.6.23/Debian 7.11 Test script: --------------- client code : <?php $timeout = 4; $context_options = array ( 'http' => array ( 'timeout' => $timeout, 'method' => 'GET', ), ); $context = stream_context_create($context_options); $start = microtime(true); $content = file_get_contents('http://localhost/test.php', false, $context) . PHP_EOL; $end = microtime(true); echo 'content: ' . $content; echo 'duration: ' . ($end - $start); server code: <?php sleep(10); exit(); Expected result: ---------------- The script should only wait the timeout specified in the stream context. Actual result: -------------- If the sleepTime > 2*timeout : in given code : 10 > 2*4 Output is : PHP Warning: file_get_contents(http://localhost/test.php): failed to open stream: HTTP request failed! in /path/testFile.php on line 17 content: duration: 8.0089149475098 If timeout < sleepTime < 2*timeout : will wait ~sleepTime, and still fail.