com php-src: one more test to illustrate transfer of an arbitrary data amount throug pipes: ext/standard/tests/streams/proc_open_b ug51800_right2.phpt

From: Date: Mon, 29 Sep 2014 18:18:33 +0000
Subject: com php-src: one more test to illustrate transfer of an arbitrary data amount throug pipes: ext/standard/tests/streams/proc_open_b ug51800_right2.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-82014@lists.php.net to get a copy of this message
Commit: 1a2a8c6d4e62f8a3f21e8d82f6b5a2a943d63e7e Author: Anatol Belski <ab@php.net> Mon, 29 Sep 2014 20:18:33 +0200 Parents: 859913f6d40611ff3987c6ddee7aa9427d94988c Branches: PHP-5.5 PHP-5.6 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=1a2a8c6d4e62f8a3f21e8d82f6b5a2a943d63e7e Log: one more test to illustrate transfer of an arbitrary data amount throug pipes Changed paths: A ext/standard/tests/streams/proc_open_bug51800_right2.phpt Diff: diff --git a/ext/standard/tests/streams/proc_open_bug51800_right2.phpt b/ext/standard/tests/streams/proc_open_bug51800_right2.phpt new file mode 100644 index 0000000..69c75cf --- /dev/null +++ b/ext/standard/tests/streams/proc_open_bug51800_right2.phpt @@ -0,0 +1,84 @@ +--TEST-- +Bug #51800 proc_open on Windows hangs forever, the right way to do it with more data +--FILE-- +<?php +$callee = dirname(__FILE__) . "/process_proc_open_bug51800_right.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 = 1000000; + +$data0 = str_repeat("a", $how_much); +$data1 = str_repeat("b", $how_much); +$i0 = $i1 = 0; +$step = 1024; + +while ($i0 < strlen($data0) && $i1 < strlen($data1)) { + fwrite(STDOUT, substr($data0, $i0, $step)); + fwrite(STDERR, substr($data1, $i1, $step)); + $i0 += $step; + $i1 += $step; +} + +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]) || !feof($pipes[2])) { + $stdout .= fread($pipes[1], 1024); + $stderr .= fread($pipes[2], 1024); + } + fclose($pipes[1]); + 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_right.php"; +unlink($callee); +?> +--EXPECTF-- +array(3) { + ["status"]=> + int(0) + ["stdout"]=> + string(1000000) "a%s" + ["stderr"]=> + string(1000000) "b%s" +} +int(1000000) +int(1000000) +===DONE=== +

« previous php.cvs (#82014) next »