Return to proc_open01.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / file |
1.1 misho 1: --TEST-- 2: proc_open() regression test 1 (proc_open() leak) 3: --FILE-- 4: <?php 5: $pipes = array(1, 2, 3); 6: $orig_pipes = $pipes; 7: $php = getenv('TEST_PHP_EXECUTABLE'); 8: if ($php === false) { 9: die("no php executable defined"); 10: } 11: $proc = proc_open( 12: "$php -n", 13: array(0 => array('pipe', 'r'), 1 => array('pipe', 'w')), 14: $pipes, getcwd(), array(), array('binary_pipes' => true) 15: ); 16: if ($proc === false) { 17: print "something went wrong.\n"; 18: } 19: var_dump($pipes); 20: stream_set_blocking($pipes[1], FALSE); 21: $test_string = b"yay!\n"; 22: fwrite($pipes[0], $test_string); 23: fflush($pipes[0]); 24: fclose($pipes[0]); 25: $cnt = ''; 26: $n=0; 27: for ($left = strlen($test_string); $left > 0;) { 28: if (++$n >1000) { 29: print "terminated after 1000 iterations\n"; 30: break; 31: } 32: $read_fds = array($pipes[1]); 33: $write_fds = NULL; 34: $exp_fds = NULL; 35: $retval = stream_select($read_fds, $write_fds, $exp_fds, 5); 36: if ($retval === false) { 37: print "select() failed\n"; 38: break; 39: } 40: if ($retval === 0) { 41: print "timed out\n"; 42: break; 43: } 44: $buf = fread($pipes[1], 1024); 45: $cnt .= $buf; 46: $left -= strlen($buf); 47: } 48: var_dump($cnt); 49: fclose($pipes[1]); 50: proc_close($proc); 51: var_dump($orig_pipes); 52: ?> 53: --EXPECTF-- 54: array(2) { 55: [0]=> 56: resource(%d) of type (stream) 57: [1]=> 58: resource(%d) of type (stream) 59: } 60: %unicode|string%(5) "yay! 61: " 62: array(3) { 63: [0]=> 64: int(1) 65: [1]=> 66: int(2) 67: [2]=> 68: int(3) 69: }