ID:               47918
 Updated by:       j...@php.net
 Reported By:      RQuadling at GMail dot com
 Status:           Open
 Bug Type:         Streams related
 Operating System: Windows
-PHP Version:      5.3
+PHP Version:      5.*, 6CVS (2009-06-19
 New Comment:

If it exists below 5.3, the version must state it! Do NOT touch it 
again.


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

[2009-06-19 09:31:34] RQuadling at GMail dot com

Only worry about 5.3+

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

[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

Reply via email to