Return to bug61019.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / streams |
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===