ID: 1432
Updated by: andy
Status: Open
Old Bug Type: Feature/Change Request
Bug Type: Sockets related
Operating System: Win32
PHP Version: 4.0
New Comment:


Previous Comments:

[2001-02-10 13:17:18] [EMAIL PROTECTED]

refiling as a bug against 4.0.


[1999-05-28 07:52:28] [EMAIL PROTECTED]

fgets recognizes a carriage return (CR, '\n', 0xod)  as a end-of-line only. The site 
in question uses line feeds (LF, \r, 0x0a) as line delimiters.

Moving the report over to feature requests.


[1999-05-21 04:28:24] [EMAIL PROTECTED]

I use PHP/3.06 win32 for writing a web crawler which
indexes URL's.

The indexer has no problems, except on ONE url that I
know of so far which seems to be, as far as I
can ascertain related to the fgets()
function failing to work.

fgets() will not read data from any socket connected
via fsockopen to port 80. I know this might
seem very strange, but fgets() never seems to be able to determine EOF and hence sits 
there forever doing nothing.
I have used a raw telnet session to try and debug this and cannot find why PHP would 
do this -- it works fine on every
other URL in the database.

Here is some code that may help:

    $sock = fsockopen("",80);

    if ($sock)
      fputs($sock,"HEAD /dreg/facade/songs/aftk.mp3 HTTP/1.1\n");
      fputs($sock,"User-Agent: HTTP-crawler/1.0\n");
      fputs($sock,"Connection: close\n\n");

/* at this point the server responds .. and it indeed does in a telnet session, but 
PHP simply wont read the data returned AT ALL. */

      while ($buf = fgets($sock,128))
        $response = $response . $buf;
        echo $buf;

No variations of this will work.. the fgets() function will timeout after a while.

i have tried while (!feof($sock)) as well, which exhibits similar behaviour, but seems 
to NEVER return from the fgets() call .. never times out.


Edit this bug report at

PHP Development Mailing List <>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to