#20397 [Fbk->Opn]: UDP connections dont respect Timeouts on Reads

From: Date: Wed, 13 Nov 2002 13:36:51 +0000
Subject: #20397 [Fbk->Opn]: UDP connections dont respect Timeouts on Reads
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-24800@lists.php.net to get a copy of this message
ID: 20397 User updated by: xf_vito@hotmail.com Reported By: xf_vito@hotmail.com -Status: Feedback +Status: Open Bug Type: Sockets related Operating System: linux PHP Version: 4.2.3 New Comment: Here is a snippet of the code, I tried set_socket_timeout it didnt work. this is using socket_set_timeout and it doesnt work either. function getrules() { $address="udp://".$this->ip; $this->socket=fsockopen($address,$this->port,$this->errno,$this->errstr,5); if(!$this->socket) { exit(); } set_socket_blocking($this->socket, FALSE); $outstring="ÿÿÿÿrules"; fwrite($this->socket,$outstring); $inbyte=$this->waitstart(); $this->rules[firstchunk]=$inbyte . fread($this->socket,3); $this->rules[rulesbyte]=$this->getchar(); $this->rules[number]=$this->getint(); for($loop=0;$loop<$this->rules[number];$loop++) { $this->rules[rules][$loop][name]=$this->getstring(); $this->rules[rules][$loop][value]=$this->getstring(); //$rulename=getstring; //$ruleval=getstring; //$this->rules[rules][$loop][name]=$rulename; //$this->rules[rules][$loop][value]=$ruleval; } fclose($this->socket); return; } function waitstart() { socket_set_timeout($this->socket, 0, 500); $inbyte=fread($this->socket,1); while($inbyte=="") { socket_set_timeout($this->socket, 0, 500); $inbyte=fread($this->socket,1); } return $inbyte; } function getstring() { socket_set_timeout($this->socket, 0, 500); $inbyte=fread($this->socket,1); while($inbyte != "\0") { $string.=$inbyte; socket_set_timeout($this->socket, 0, 500); $inbyte=fread($this->socket,1); } return $string; } Previous Comments: ------------------------------------------------------------------------ [2002-11-12 13:44:27] iliaa@php.net How are you setting the timeout value? The timeout value specified as the 5th argument to fsockopen() is only the timeout for the connection initiation. The read/write timeouts should be set via the stream_set_timeout() (CVS) or set_socket_timeout() in older versions. ------------------------------------------------------------------------ [2002-11-12 11:33:34] xf_vito@hotmail.com I create a udp connection using fsockopen and before all my reads I set a socket timeout. The timeouts are never respected, because if this situation arises, I time out with FATAL ERROR: timed out greater than 30 sec msg from the server. I want to be able to catch this before reaching the FATAL ERROR. The behaviour can be seen at our website http://www.xtreme-forces.com Click on the SERVERS button to see the page in action. 60% of the time it works great rest it will Fatal, hit the Refresh to cause the error to occur quicker. I can make the code available upon request. thanks Vito ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=20397&edit=1

« previous php.bugs (#24800) next »