#24001 [Bgs]: fread limited by ca. 2.7K ?

From: Date: Tue, 08 Jul 2003 02:43:26 +0000
Subject: #24001 [Bgs]: fread limited by ca. 2.7K ?
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-43412@lists.php.net to get a copy of this message
ID: 24001 Updated by: pollita@php.net Reported By: eric at pitte dot de Status: Bogus Bug Type: Filesystem function related Operating System: Suse 8.2 PHP Version: 4.3.2 New Comment: P.S. - About a week ago I expanded the opening note which phpbug@digvid.info quotes, however the manual has not been rebuilt yet. fread() reads up to length bytes from the file pointer referenced by handle. Reading stops when length bytes have been read, EOF (end of file) is reached, or (for network streams) when a packet becomes available, whichever comes first. Previous Comments: ------------------------------------------------------------------------ [2003-07-07 14:26:43] wez@php.net Also from the manual: Note: When reading from network streams or pipes, such as those returned when reading remote files or from popen() and proc_open(), reading will stop after a packet is available. This means that you should collect the data together in chunks as shown in the example below. <?php $handle = fopen ("http://www.php.net/", "rb"); $contents = ""; do { $data = fread ($handle, filesize ($filename)); if (strlen($data) == 0) { break; } $contents .= $data; } fclose ($handle); ?> ------------------------------------------------------------------------ [2003-07-07 13:53:28] phpbug at digvid dot info The documentation at http://uk.php.net/manual/en/function.fread.php states: Reading stops when length bytes have been read or EOF (end of file) reached, whichever comes first. This does not seem to be the case. Ian ------------------------------------------------------------------------ [2003-06-03 16:08:35] pollita@php.net P.S. - To add to derick's response: The reason the file read is comming out specifically at 2.7KB is that the default chunksize for http streams is 4KB. The "missing" 1.3KB is likely buried in the response headers. ------------------------------------------------------------------------ [2003-06-03 16:06:36] eric at pitte dot de yes it's working on this way. Thank you strange on my older PHP version the old syntax worked properly. ------------------------------------------------------------------------ [2003-06-03 15:55:07] derick@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php fread() uses the MAXIMUM length as you specify, but it may chunk the input as it likes. Use something like: $contents = \'\'; while (($data = fread($fp, 2048)) !== \"\") { $contents .= $data; } ------------------------------------------------------------------------ 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/24001 -- Edit this bug report at http://bugs.php.net/?id=24001&edit=1

« previous php.bugs (#43412) next »