ID: 26454
User updated by: nunoplopes at sapo dot pt
Reported By: nunoplopes at sapo dot pt
-Status: Feedback
+Status: Open
Bug Type: Sockets related
Operating System: Windows XP - Apache
PHP Version: 4.3.5-dev
New Comment:
I've installed the new snapshot (Nov 29, 2003 17:30 GMT).
The script still times out. The example I wrote before still doesn't
work, but there is other with feof that works. Really strange....
Working script:
<?
$fp = fsockopen ("pt.php.net", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
fputs ($fp, "GET / HTTP/1.1\r\n");
fputs ($fp, "Host: pt.php.net\r\n");
fputs ($fp, "Connection: Close\r\n\r\n");
while (!feof($fp)) {
echo fgets ($fp,128);
}
fclose ($fp);
}
?>
Previous Comments:
------------------------------------------------------------------------
[2003-11-29 07:00:54] [EMAIL PROTECTED]
oops; please try the next snapshot in 3.5 hours time.
------------------------------------------------------------------------
[2003-11-29 05:08:15] nunoplopes at sapo dot pt
I've downloaded the latest cvs snapshot but the script continues to
time out.
In http://snaps.php.net/win32/compile-STABLE.log there is an error
compiling main\network.c. Maybe its because of that error.
------------------------------------------------------------------------
[2003-11-28 17:26:23] [EMAIL PROTECTED]
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
Please try the snapshot that will be generated in about 4 hours (from
the time of this post).
------------------------------------------------------------------------
[2003-11-28 15:17:56] nunoplopes at sapo dot pt
Description:
------------
I opened a socket using fsockopen and then I send some data using
fputs.
Then I try to read data either using feof of fgets. If the servers
returns 2 lines and I call three times the fgets(), the script times
out when it reaches the 30 seconds. If I only call fgets 2 times,
everything works fine.
feof also stops the script execution.
So, I have no way to know if servers' response has ended or not.
Reproduce code:
---------------
Get the code from CVS at:
http://cvs.sourceforge.net/viewcvs.py/phpdocmanager/phpcvsclass/
Or just a small example:
<?
if ($handle = fsockopen ("cvs.php.net", 2401, $errno, $errstr, 30)) {
$text = "BEGIN AUTH REQUEST\n";
$text .= "/repository\n";
$text .= "cvsread\n";
$text .= "A\n";
$text .= "END AUTH REQUEST\n";
fputs ($handle, $text);
fgets($handle); // "I LOVE YOU\n"
fputs ($handle, "version\n");
echo fgets($handle);
echo fgets($handle);
echo fgets($handle);
fclose($handle);
}
?>
Expected result:
----------------
M Concurrent Versions System (CVS) 1.12.2 (client/server)\n
ok
Actual result:
--------------
timeout
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=26454&edit=1