#36216 [Bgs]: timeout doesnt works in fsockopen
| From: | tony2001@php.net | Date: | Tue, 31 Jan 2006 13:40:15 +0000 |
| Subject: | #36216 [Bgs]: timeout doesnt works in fsockopen | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-92700@lists.php.net to get a copy of this message | ||
ID: 36216
Updated by: tony2001@php.net
Reported By: ipmax at freesurf dot fr
Status: Bogus
Bug Type: Sockets related
Operating System: debian
PHP Version: 5.1.2
New Comment:
Host generation.elliptic.fr is alive and fsockopen() succeeds for me.
But with that's what I get with sf.net, for example:
# time ./sapi/cli/php -r 'var_dump(fsockopen("sf.net",
8060,&$errno,&$errstr,5));'
Warning: fsockopen(): unable to connect to sf.net:8060 (Connection
timed out) in Command line code on line 1
bool(false)
real 0m5.257s
user 0m0.007s
sys 0m0.002s
Previous Comments:
------------------------------------------------------------------------
[2006-01-31 14:23:01] ipmax at freesurf dot fr
Try this one, it reply connected, but hangs for ever.
Tested on Debian and redhat. Same Result.
$scfp=fsockopen("generation.elliptic.fr", 8060,&$errno,&$errstr,5);
if(!$scfp) {echo "error"; exit;
} else {
echo "connected,";
fputs($scfp,"GET /admin.cgi\r\n\r\n");
while(!feof($scfp)) {$page .= fgets($scfp); }
}
fclose($scfp);
------------------------------------------------------------------------
[2006-01-31 12:32:54] tony2001@php.net
Works fine on different Fedora Core and SuSE versions, AIX, Solaris and
FreeBSD, hence the problem is not in PHP itself, but somewhere in the
underlying system libraries.
Please report this issue to Debian developers.
------------------------------------------------------------------------
[2006-01-31 12:07:30] ipmax at freesurf dot fr
thanks, i already got 5.1
i can't reinstall php now, but this bug as been reported many times,
since years, so i dont think it is debug today.
------------------------------------------------------------------------
[2006-01-31 07:50:40] tony2001@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5.1-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5.1-win32-latest.zip
------------------------------------------------------------------------
[2006-01-31 04:52:12] ipmax at freesurf dot fr
You can delete previous post, here is a good example :
This echo "connected," and hangs for ever, timout doesnt works :
---------------------------------
$scfp=fsockopen("generation.elliptic.fr", 8060,&$errno,&$errstr,5);
if(!$scfp) {echo "error"; exit;
} else {
echo "connected,";
fputs($scfp,"GET /admin.cgi\r\n\r\n");
while(!feof($scfp)) {$page .= fgets($scfp); }
fclose($scfp);
//////////////////////
This works, considering timout is checked in the fgets loop.
stream_set_timeout() replace the bug of fsockopen that doesnt timeout.
$scfp=fsockopen("generation.elliptic.fr", 8060,&$errno,&$errstr,2);
if(!$scfp) {echo "error"; exit;
} else {
echo "connected,";
stream_set_timeout($scfp,2);
fputs($scfp,"GET /admin.cgi\r\n\r\n");
while(!feof($scfp)) {$page .= fgets($scfp);
$info = stream_get_meta_data($scfp);
if ($info['timed_out']) { echo "timeout"; exit; }
}
fclose($scfp);
---------------------
PHP 5.1.1-1.dotdeb.2 (cli) (built: Dec 1 2005 12:46:40)
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/36216
--
Edit this bug report at http://bugs.php.net/?id=36216&edit=1