ID:               35859
 Updated by:       [EMAIL PROTECTED]
 Reported By:      cpuidle at gmx dot de
-Status:           Open
+Status:           Closed
 Bug Type:         Documentation problem
 Operating System: WinXP SP2
 PHP Version:      5.1.1
 New Comment:

This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation
better.

"Reading stops when up to length bytes have been read, EOF (end of
file) is reached, (for network streams) when a packet becomes
available, or (for userspace streams) when 8192 bytes have been read
whichever comes first."


Previous Comments:
------------------------------------------------------------------------

[2006-01-09 22:14:52] cpuidle at gmx dot de

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?

------------------------------------------------------------------------

[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.

------------------------------------------------------------------------

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

Reply via email to