Edit report at https://bugs.php.net/bug.php?id=64921&edit=1

 ID:                 64921
 User updated by:    rdlowrey at gmail dot com
 Reported by:        rdlowrey at gmail dot com
 Summary:            Inconsistent stream_select() behavior for
                     php://memory vs. php://temp
 Status:             Open
 Type:               Bug
 Package:            Streams related
 Operating System:   Fedora 17
 PHP Version:        5.4.15
 Block user comment: N
 Private report:     N

 New Comment:

UPDATE:

According to http://php.net/manual/en/wrappers.php.php php://temp DOES support  
stream_select(). However, if this is the case, the behavior described here is 
still incorrect because stream_select() reports that the descriptor is readable 
 
even though it has no readable data and feof($stream) === FALSE.


Previous Comments:
------------------------------------------------------------------------
[2013-05-25 00:11:00] rdlowrey at gmail dot com

Description:
------------
Streams of type php://memory cannot be represented as selectable descriptors 
where stream_select() is concerned. Attempting to do so will (rightly) trigger 
an 
E_WARNING along the lines of "Warning: stream_select(): cannot represent a 
stream 
of type MEMORY as a select()able descriptor in ..."

I would expect streams of type php://temp to behave the same way. However, this 
is not the case. Instead, php://temp streams are immediately readable (but do 
not 
evaluate to TRUE for feof($stream). These streams should either (1) trigger an 
error similar to that of php://memory or (2) not be represented as readable by 
stream_select().

Test script:
---------------
$stream = fopen('php://memory', 'r+');
$r = array($stream);
$w = $e = NULL;

stream_select($r, $w, $e, 0); // E_WARNING (as expected)

$stream = fopen('php://temp', 'r');
$r = array($stream);
$w = $e = NULL;

if (stream_select($r, $w, $e, 0)) {
    var_dump(feof($stream)); // this isn't readable and should never be called 
but it results in bool(false)
}

Expected result:
----------------
The test script should trigger two warnings and neither stream should report as 
readable.

Actual result:
--------------
php://temp streams do not trigger an error when used with stream_select() and 
are 
immediately reported as readable.


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



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=64921&edit=1

Reply via email to