ID: 35859
User updated by: cpuidle at gmx dot de
Reported By: cpuidle at gmx dot de
Status: Open
Bug Type: Documentation problem
Operating System: WinXP SP2
PHP Version: 5.1.1
New Comment:
Not sure why you couldn't find the code or what else you need but here
it is again:
Reproduce code:
---------------
<?php
class VariableStream {
var $position, $varname;
function stream_open($path, $mode, $options, &$opened_path) {
$url = parse_url($path);
$this->varname = $url['host'];
$this->position = 0;
return true;
}
function stream_read($count) {
$ret = substr($GLOBALS[$this->varname],
$this->position,$count);
$this->position += strlen($ret);
return $ret;
}
function stream_eof() {
return $this->position >= strlen($GLOBALS[$this->varname]);
}
function stream_stat() {
return array('size' => strlen($GLOBALS[$this->varname]));
}
function url_stat() {
return array();
}
}
function read($filename) {
if (file_exists($filename) && ($fd = @fopen($filename, 'rb'))) {
$size = filesize($filename);
$contents = fread($fd, $size);
}
echo("\$filename $filename: \$size: $size
strlen(\$contents):".strlen($contents)."<br/>");
}
// local file (>8k)
$filename = 'templates/elegant/show.tpl';
// will read entire file
read($filename);
stream_wrapper_register('var', 'VariableStream');
// will only read 8K
read($filename);
?>
Expected result:
----------------
$filename templates/elegant/show.tpl: $size: 9520 strlen($contents):
9520
$filename templates/elegant/show.tpl: $size: 9520 strlen($contents):
9520 (!!)
Actual result:
--------------
$filename templates/elegant/show.tpl: $size: 9520 strlen($contents):
9520
$filename templates/elegant/show.tpl: $size: 9520 strlen($contents):
8192 (!!)
Could you point me to where it's documented?
Previous Comments:
------------------------------------------------------------------------
[2006-01-09 19:35:02] [EMAIL PROTECTED]
This bug really miss the reproduce script ("Unfortunately the sample
code does not reproduce the problem standalone, but demonstrates the
effect.").
The point lies in using fread() together with stream wrappers (it's
somehow documented now) and the 8K limit.
------------------------------------------------------------------------
[2006-01-09 18:49:22] cpuidle at gmx dot de
For code to reproduce see Bug #35918. Problem is that the block size is
only in effect after stream wrapper functions are being used. And only
in 5.1.1, not 4.x (obviously) or 5.0.5. This is what makes the thing
fishy and imho more than a documentation issue.
Thanks,
Andi
------------------------------------------------------------------------
[2006-01-09 18:03:27] [EMAIL PROTECTED]
the packet size is 8k (8192)..
------------------------------------------------------------------------
[2006-01-09 17:58:49] [EMAIL PROTECTED]
Jakub probably clicked in the wrong button :)
Anyway I think that the packet size (4k) should also be documented,
thus leaving this bug open.
------------------------------------------------------------------------
[2006-01-09 16:25:23] [EMAIL PROTECTED]
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc.
If possible, make the script source available online and provide
an URL to it here. Try to avoid embedding huge scripts into the report.
------------------------------------------------------------------------
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/35859
--
Edit this bug report at http://bugs.php.net/?id=35859&edit=1