|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2013-01-12 12:09 UTC] bbroerman at bbroerman dot net
[2021-10-01 11:35 UTC] cmb@php.net
-Status: Open
+Status: Feedback
-Assigned To:
+Assigned To: cmb
[2021-10-01 11:35 UTC] cmb@php.net
[2021-10-10 04:22 UTC] php-bugs at lists dot php dot net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Nov 14 20:00:02 2025 UTC |
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