|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-11-12 11:33 UTC] xf_vito at hotmail dot 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 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 11:00:01 2025 UTC |
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; }