????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 18.117.246.69 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/home/b8009/php-5.6.22/ext/standard/tests/streams/ |
Upload File : |
--TEST-- Bug #51800 proc_open on Windows hangs forever --SKIPIF-- <?php echo 'skip expected to fail or take too long'; if (getenv("SKIP_SLOW_TESTS")) { die("skip slow test"); } ?> --XFAIL-- pipes have to be read/written simultaneously --FILE-- <?php /* This is the wrong way to do it. The parent will block till it has read all the STDIN. The smaller the pipe buffer is, the longer it will take. It might even pass at the end, after taking inappropriately long. Pipes have to be read simultaneously in smaller chunks, so then the pipe buffer is emptied more often and the child has chance to continue its write. The behaviour might look some better if write/read in a separate thread, however this is much more resource greedy and complexer to integrate into the user script. */ $callee = dirname(__FILE__) . "/process_proc_open_bug51800.php"; $php = PHP_BINARY; $cmd = "$php $callee"; $status; $stdout = ""; $stderr = ""; $pipes = array(); $descriptors = array( 0 => array("pipe", "rb"), // stdin 1 => array("pipe", "wb"), // stdout 2 => array("pipe", "wb") // stderr ); /* create the proc file */ $r = file_put_contents($callee, '<?php $how_much = 10000; $data0 = str_repeat("a", $how_much); $data1 = str_repeat("b", $how_much); fwrite(STDOUT, $data0); fwrite(STDERR, $data1); exit(0); '); if (!$r) { die("couldn't create helper script '$callee'"); } $process = proc_open($cmd, $descriptors, $pipes); if (is_resource($process)) { fclose($pipes[0]); while (!feof($pipes[1])) $stdout .= fread($pipes[1], 1024); fclose($pipes[1]); while (!feof($pipes[2])) $stderr .= fread($pipes[2], 1024); fclose($pipes[2]); $status = proc_close($process); } var_dump(array( "status" => $status, "stdout" => $stdout, "stderr" => $stderr, ), strlen($stdout), strlen($stderr)); ?> ===DONE=== --CLEAN-- <?php $callee = dirname(__FILE__) . "/process_proc_open_bug51800.php"; unlink($callee); ?> --EXPECTF-- array(3) { ["status"]=> int(0) ["stdout"]=> string(10000) "a%s" ["stderr"]=> string(10000) "b%s" } int(10000) int(10000) ===DONE===