Annotation of embedaddon/php/ext/standard/tests/streams/bug61019.phpt, revision 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>