Re: socket timeout being ignored
- From: Jerry Stuckle <jstucklex@xxxxxxxxxxxxx>
- Date: Wed, 02 Aug 2006 16:50:48 -0400
yawnmoth wrote:
Say I have the following script:
<?
$timeout = 5;
$start = time();
$fsock = fsockopen('125.1.119.10',80,$errno,$errstr,$timeout);
// reduce $timeout by the amount of time that it took for fsockopen to
connect.
$timeout-=(time()-$start);
socket_set_timeout($fsock,$timeout);
fputs($fsock,"GET http://www.google.com/ HTTP/1.0\r\n");
fputs($fsock,"Host: www.google.com\r\n\r\n");
while ( !feof($fsock) )
{
echo fgets($fsock);
}
fclose($fsock);
?>
As you can tell, the timeout is set to 5 seconds in fsockopen and then
is set to how ever many seconds out of that 5 that fsockopen didn't
take to connect.
All in all, the whole script should run in, at most, 5 seconds. Or
atleast it seems like it should. Sometimes, however, it doesn't - it
takes several minutes. And unfortunately, this happens enough times to
be kinda a nuisance. And I have no idea what the problem is.
Any ideas?
What happens if the fsockopen() takes longer than 5 seconds?
See the note on fsockopen() - the timeout may not be available in all environments. So a delay due to routing, server load or whatever may cause the open to take longer than 5 seconds, putting a negative value in your $timeout. I don't know what PHP will do with a negative value - maybe convert it to a very large positive value?
Additionally, the timeout restarts every time you go a fgets(). The server could be sending one line every 4 seconds, for instance. 10 lines would be 40 seconds with no errors.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@xxxxxxxxxxxxx
==================
.
- Follow-Ups:
- Re: socket timeout being ignored
- From: yawnmoth
- Re: socket timeout being ignored
- References:
- socket timeout being ignored
- From: yawnmoth
- socket timeout being ignored
- Prev by Date: Re: MySql support in PHP 5.x
- Next by Date: Re: Use file() function to read a variable name, not a literal name.
- Previous by thread: socket timeout being ignored
- Next by thread: Re: socket timeout being ignored
- Index(es):
Relevant Pages
|