ID: 47918
User updated by: RQuadling at GMail dot com
Reported By: RQuadling at GMail dot com
Status: Open
Bug Type: Streams related
Operating System: Windows
-PHP Version: 5.*, 6CVS (2009-04-07)
+PHP Version: 5.3
New Comment:
Only worry about 5.3+
Previous Comments:
------------------------------------------------------------------------
[2009-05-08 09:58:57] RQuadling at GMail dot com
I also tried opening the pipes descriptors like ...
$a_Descriptors = array(0 => array('pipe', 'rn'), 1 => array('pipe',
'wn'), 2 => array('pipe', 'wn'));
but no change.
------------------------------------------------------------------------
[2009-04-07 21:50:45] RQuadling at GMail dot com
I tried both 0 and False to set non blocking mode. In all cases the
function returns false and the meta data reports that the pipe is
still in blocking mode.
I've just tried it with PHP 5.2.8 (cli) (built: Dec 8 2008 19:31:23)
(on Windows XP SP3) on my home laptop and the same problem.
------------------------------------------------------------------------
[2009-04-07 12:31:33] RQuadling at GMail dot com
Description:
------------
I'm trying to set non-blocking mode on pipes attached to a process
opened using proc_open.
The documentation and the user notes suggest that what I am doing
should work.
Running this with php -n to remove my ini file settings.
Reproduce code:
---------------
<?php
echo PHP_VERSION, ' ', PHP_OS, ' ', PHP_SAPI, PHP_EOL;
echo 'INI:', php_ini_loaded_file(), PHP_EOL;
// Define the descriptors.
$a_Descriptors = array(0 => array('pipe', 'r'), 1 => array('pipe',
'w'), 2 => array('pipe', 'w'));
// Provide a place for the pipes.
$a_Pipes = array();
// Create the thread.
$r_Thread = proc_open("dir c:\\ /b", $a_Descriptors, $a_Pipes, Null,
$_ENV);
// Display the current STDOUT meta data.
print_r(stream_get_meta_data($a_Pipes[1]));
// Try to change the blocking mode to non-blocking.
echo (stream_set_blocking($a_Pipes[1], False) ? 'Successfully' :
'Failed'), ' to set blocking mode to non-blocking', PHP_EOL;
// Display the current STDOUT meta data.
print_r(stream_get_meta_data($a_Pipes[1]));
Expected result:
----------------
5.3.0RC2-dev WINNT cli
INI:
Array
(
[stream_type] => STDIO
[mode] => r
[unread_bytes] => 0
[seekable] =>
[timed_out] =>
[blocked] => 1
[eof] =>
)
Successfully set blocking mode to non-blocking
Array
(
[stream_type] => STDIO
[mode] => r
[unread_bytes] => 0
[seekable] =>
[timed_out] =>
[blocked] =>
[eof] =>
)
Actual result:
--------------
5.3.0RC2-dev WINNT cli
INI:
Array
(
[stream_type] => STDIO
[mode] => r
[unread_bytes] => 0
[seekable] =>
[timed_out] =>
[blocked] => 1
[eof] =>
)
Failed to set blocking mode to non-blocking
Array
(
[stream_type] => STDIO
[mode] => r
[unread_bytes] => 0
[seekable] =>
[timed_out] =>
[blocked] => 1
[eof] =>
)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=47918&edit=1