Edit report at https://bugs.php.net/bug.php?id=62605&edit=1
ID: 62605 Comment by: bbroerman at bbroerman dot net Reported by: sempasha at gmail dot com Summary: stream_set_timeout does not affect on sll socket connections Status: Open Type: Bug Package: Network related Operating System: Windows 7, CentOS 6.3 PHP Version: 5.3.14 Block user comment: N Private report: N New Comment: My company despirately needs this to be fixed! We are experiencing the same issue ( from within a PHP extension we are developing ). We really need this to be able to support SSL with read timeouts! Previous Comments: ------------------------------------------------------------------------ [2012-07-19 05:43:51] sempasha at gmail dot com Description: ------------ Unable to set read timeout for socket which work with SSL connection by stream_set_timeout function. In other case, when we use socket with non-SSL connection, socket_set_timeout works fine. There are 2 potential problems: 1. stream_set_timeout returns TRUE, but does not works as expected 2. stream_set_timeout does not work for sockets with SSL connections Related bugs are #23618, #35105, #43796, #47929. Some patches attached to every related bug, but still not fixed in PHP. It's hard to believe, that since year 2003 nothing was done on this problem. Test script: --------------- <?php // test.php // on port 8000 at 127.0.0.1 runs daemon, which accepts incoming connections and nothing more $socket = fsockopen('ssl://127.0.0.1', 8000, $errno, $errstr, 10); if (!is_resource($socket)) die('Socket connection error '.$errno.', '.$errstr.' at line '.__LINE__.' in file '.__FILE__); if (!stream_set_timeout($socket, 1)) die('Unable to set stream timeout at line '.__LINE__.' ion file '.__FILE__); if (!set_time_limit(2)) die('Unable to set time limit at line '.__LINE__.' ion file '.__FILE__); $message = fread($socket, 1024).PHP_EOL; $metadata = stream_get_meta_data($socket); if ($metadata['timed_out']) die('Stream is timed out at line '.__LINE__.' in file '.__FILE__); Expected result: ---------------- Possible output variants: 1. socket open error >test.php Socket connection error SOCKET-OPEN-ERROR-CODE, SOCKET-OPEN-ERROR-TEXT at line 8 in file test.php 2. stream_set_timeout error >test.php Unable to set stream timeout at line 11 ion file test.php 3. stream_set_timeout works fine and reading breaked by timeout >test.php Stream is timed out at line 21 in file test.php 4. stream_set_timeout does not affect (despite the fact it returns TRUE) and limit of script execution time exceeded >test.php Fatal error: Maximum execution time of 2 seconds exceeded in test.php on line 16 Actual result: -------------- Real output variants: 1. socket open error >test.php Socket connection error SOCKET-OPEN-ERROR-CODE, SOCKET-OPEN-ERROR-TEXT at line 8 in file test.php 2. stream_set_timeout never return FALSE >test.php Unable to set stream timeout at line 11 ion file test.php 3. stream_set_timeout does not affect, reading never ends, empty output >test.php 4. stream_set_timeout does not affect (despite the fact it returns TRUE) but limit of script execution time will never reached, empty output, reading never ends >test.php ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=62605&edit=1