#24001 [Bgs]: fread limited by ca. 2.7K ?
| From: | pollita@php.net | 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