PHP 4.0 Bug #1432 Updated: fgets() fails on certain sockets

From: Date: Sat, 10 Feb 2001 18:17:18 +0000
Subject: PHP 4.0 Bug #1432 Updated: fgets() fails on certain sockets
Groups: php.dev 
Request: Send a blank email to php-dev+get-46172@lists.php.net to get a copy of this message
ID: 1432 Updated by: jimw Reported By: adam@musicseek.net Status: Open Old-Bug Type: Feature/Change Request Bug Type: Sockets related Assigned To: Comments: refiling as a bug against 4.0. Previous Comments: --------------------------------------------------------------------------- [1999-05-28 07:52:28] sas@cvs.php.net 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] adam@musicseek.net 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 www.hutman.com 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("www.hutman.com",80); if ($sock) { fputs($sock,"HEAD /dreg/facade/songs/aftk.mp3 HTTP/1.1n"); fputs($sock,"Host: www.hutman.comn"); fputs($sock,"User-Agent: HTTP-crawler/1.0n"); fputs($sock,"Connection: closenn"); /* 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. --------------------------------------------------------------------------- ATTENTION! Do NOT reply to this email! To reply, use the web interface found at http://bugs.php.net/?id=1432&edit=2

« previous php.dev (#46172) next »