php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #68798 stream_select() preserves keys since rev. 305856 breaking some code without note
Submitted: 2015-01-11 03:14 UTC Modified: 2020-10-27 13:03 UTC
Votes:3
Avg. Score:3.7 ± 1.9
Reproduced:2 of 2 (100.0%)
Same Version:3 (150.0%)
Same OS:1 (50.0%)
From: grzegorz129 at gmail dot com Assigned: cmb (profile)
Status: Closed Package: Streams related
PHP Version: 5.6.4 OS: All
Private report: No CVE-ID: None
 [2015-01-11 03:14 UTC] grzegorz129 at gmail dot com
Description:
------------
Bug #53427 proposed stream_select() should preserve array keys, it was implemented in revision #305856 (http://svn.php.net/viewvc/?view=revision&revision=305856).
However there's no documentation or changelog informations about changed behaviour.
I believe it was first available since 5.4.

Test script:
---------------
$read = $except = null;
$write = ["test" => fopen("php://stdout", "w")];

var_dump($write);
stream_select($read, $write, $except, 0);
var_dump($write);


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2015-01-11 07:03 UTC] grzegorz129 at gmail dot com
-Summary: stream_select() preserves keys since rev. 305856 +Summary: stream_select() preserves keys since rev. 305856 breaking some code without note
 [2015-01-11 07:03 UTC] grzegorz129 at gmail dot com
I have confirmed stream_select() behave differently on 5.3.29 (tested on OS X).

/******** TEST CODE ********/
$read = $except = null;
$write = array("test" => fopen("php://stdout", "w"));

var_dump($write);
stream_select($read, $write, $except, 0);
var_dump($write);

/******** PHP 5.6.4 ********/
array(1) {
  ["test"]=>
  resource(5) of type (stream)
}
array(1) {
  ["test"]=>
  resource(5) of type (stream)
}

/******** PHP 5.3.29 ********/
array(1) {
  ["test"]=>
  resource(5) of type (stream)
}
array(1) {
  [0]=>
  resource(5) of type (stream)
}


Example of code which conforms to documentation of stream_select() but fails on 5.6.4:

$read = $except = null;
$write = array("test" => fopen("php://stdout", "w"));

stream_select($read, $write, $except, 0);
for($i = 0; $i < count($write); $i++) {
 var_dump($write[$i]); //"resource(n) of type (stream)" on 5.3.29, NULL on 5.6.4
}
 [2017-01-28 12:51 UTC] cmb@php.net
-Package: Documentation problem +Package: Streams related
 [2020-10-27 13:03 UTC] cmb@php.net
-Status: Open +Status: Verified -Assigned To: +Assigned To: cmb
 [2020-10-27 13:03 UTC] cmb@php.net
A bit late to document this, though.
 [2020-10-27 13:12 UTC] phpdocbot@php.net
Automatic comment on behalf of cmb
Revision: http://git.php.net/?p=doc/en.git;a=commit;h=c2fea13ec01631394e1f5cc20aefe2fce1e299fe
Log: Fix #68798: stream_select() preserves keys since rev. 305856 breaking some code without note
 [2020-10-27 13:12 UTC] phpdocbot@php.net
-Status: Verified +Status: Closed
 [2020-10-27 19:30 UTC] phpdocbot@php.net
Automatic comment on behalf of mumumu
Revision: http://git.php.net/?p=doc/ja.git;a=commit;h=fe657af3f7e647eadaa1bbbe6e85e8abd8075047
Log: Fix #68798: stream_select() preserves keys
 
PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Tue Nov 24 23:01:23 2020 UTC