#26454 [Opn->Fbk]: feof and fgets hangs out
| From: | wez@php.net | Date: | Sun, 30 Nov 2003 10:22:47 +0000 |
| Subject: | #26454 [Opn->Fbk]: feof and fgets hangs out | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-51375@lists.php.net to get a copy of this message | ||
ID: 26454
Updated by: wez@php.net
Reported By: nunoplopes at sapo dot pt
-Status: Open
+Status: Feedback
Bug Type: Sockets related
Operating System: Windows XP - Apache
PHP Version: 4CVS-2003-11-30
Assigned To: wez
New Comment:
Please, just a single script, and please explain what happens and why
it is wrong.
Previous Comments:
------------------------------------------------------------------------
[2003-11-30 05:14:18] nunoplopes at sapo dot pt
I've compiled a couple of tests and its results on my pc, using the
snapshot of Nov 30, 2003 09:30 GMT.
The tests andits results are at:
http://testes.aborla.net/php-bugreport.tar.bz2
------------------------------------------------------------------------
[2003-11-30 04:33:06] wez@php.net
Can you clarify what is happening now (with the updated snapshot)?
Provide a short script and explain what happens and why you think it is
wrong.
Thanks!
------------------------------------------------------------------------
[2003-11-29 14:59:41] nunoplopes at sapo dot pt
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);
}
?>
------------------------------------------------------------------------
[2003-11-28 17:26:23] iliaa@php.net
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