ID: 24001
Updated by: [EMAIL PROTECTED]
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
[EMAIL PROTECTED] 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] [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
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