php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #35077 stream_set_timeout() does not work with stream_socket_recvfrom()
Submitted: 2005-11-03 03:12 UTC Modified: 2005-11-04 15:21 UTC
From: pn2865 at yahoo dot com Assigned:
Status: Closed Package: Documentation problem
PHP Version: Irrelevant OS: *
Private report: No CVE-ID: None
 [2005-11-03 03:12 UTC] pn2865 at yahoo dot com
Description:
------------
Sample program tries to get data via UDP and never completes if none received. Use any IP address and port that does (or does not) exist and you get the same result if that IP does not send a UDP packet to the system this snippet is run on.

Reproduce code:
---------------
$server_recv = stream_socket_server("udp://192.168.1.100:9999", $errno, $errstr, STREAM_SERVER_BIND);
if (!$server_recv) 
	exit ("ERROR: stream_socket_server failed");

set_time_limit(2); //  Will not interrupt stream_socket_recvfrom
stream_set_timeout($server_recv,3,0);

$packet=stream_socket_recvfrom($server_recv, 1000);
$info = stream_get_meta_data($server_recv);
if ($info['timed_out']) 
  echo 'Connection timed out!';
else
	echo "Got back '$packet'"; 

Expected result:
----------------
Should timeout at 3 seconds.

Actual result:
--------------
Never comes back from stream_socket_recvfrom call.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-11-03 17:03 UTC] wez@php.net
It's supposed to work this way; use stream_select() to implement your own timeout when you're doing "advanced" things like this.
Changing to a documentation problem.
 [2005-11-04 15:21 UTC] vrana@php.net
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation better.

"This function doesn't work with advanced operations like stream_socket_recvfrom(), use stream_select() with timeout parameter instead."
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Thu Jul 17 14:04:04 2025 UTC