Annotation of embedaddon/php/ext/standard/tests/streams/bug61019.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Bug #61019 (Out of memory on command stream_get_contents)
                      3: --FILE--
                      4: <?php
                      5: 
                      6: echo "Test\n";
                      7: 
                      8: $descriptorspec = array(
                      9:        0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
                     10:        1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
                     11:        2 => array("pipe", "w")   // stderr is a pipe that the child will write to
                     12: );
                     13: 
                     14: $process=proc_open("echo testtext",$descriptorspec,$pipes);
                     15: if(is_resource($process))
                     16: {
                     17:        stream_set_blocking($pipes[0],false);
                     18:        stream_set_blocking($pipes[1],false);
                     19:        stream_set_blocking($pipes[2],false);
                     20:        stream_set_write_buffer($pipes[0],0);
                     21:        stream_set_read_buffer($pipes[1],0);
                     22:        stream_set_read_buffer($pipes[2],0);
                     23:        $stdin_stream="";
                     24:        $stderr_stream="";
                     25: 
                     26:        echo "External command executed\n";     
                     27:        do                                      
                     28:        {
                     29:                $process_state=proc_get_status($process);
                     30:                $tmp_stdin=stream_get_contents($pipes[1]);      
                     31:                if($tmp_stdin) 
                     32:                {
                     33:                        $stdin_stream=$stdin_stream.$tmp_stdin;
                     34:                }
                     35:                $tmp_stderr=stream_get_contents($pipes[2]);
                     36:                if($tmp_stderr) 
                     37:                {
                     38:                        $stderr_stream=$stderr_stream.$tmp_stderr;
                     39:                }
                     40:        } while($process_state['running']);
                     41: 
                     42:        echo "External command exit: ".$process_state['exitcode']."\n";
                     43: 
                     44:        //read outstanding data
                     45:        $tmp_stdin=stream_get_contents($pipes[1]);      
                     46:        if($tmp_stdin) 
                     47:        {
                     48:                $stdin_stream=$stdin_stream.$tmp_stdin;
                     49:        }
                     50:        $tmp_stderr=stream_get_contents($pipes[2]);
                     51:        if($tmp_stderr) 
                     52:        {
                     53:                $stderr_stream=$stderr_stream.$tmp_stderr;
                     54:        }
                     55: 
                     56:        fclose ($pipes[0]);
                     57:        fclose ($pipes[1]);
                     58:        fclose ($pipes[2]);
                     59: 
                     60:        proc_close($process);    
                     61: 
                     62:        echo "STDOUT: ".$stdin_stream."\n";
                     63:        echo "STDERR: ".$stderr_stream."\n";
                     64: }
                     65: else
                     66: {
                     67:        echo "Can't start external command\n";
                     68: }
                     69: ?>
                     70: ===DONE===
                     71: --EXPECT--
                     72: Test
                     73: External command executed
                     74: External command exit: 0
                     75: STDOUT: testtext
                     76: 
                     77: STDERR: 
                     78: ===DONE===

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>