子プロセスの出力をPHPでキャプチャして操作する必要があります。
私は2つの小さなスクリプトを持っています、parent.php
そしてchild.php
これはのコードですparent.php
$exe = $_SERVER['_'];
$command = '/var/www/child.php';
echo "\nSTART\n";
$pid = pcntl_fork();
ob_start();
echo "\nHELLO\n";
if ($pid == -1)
exit("Could not fork");
else if ($pid)
pcntl_waitpid($pid, $status);
else
{
$args = array
(
"arg1" => 'one',
"arg2" => 'two',
"arg3" => 'three'
);
pcntl_exec($exe, array($command), $args);
}
$content = ob_get_contents();
ob_end_clean();
echo "\nEND\n";
echo $content . "\n";
そしてこれはのコードですchild.php
echo "\n\tHELLO FROM TEST\n";
echo "\t"; var_dump($_SERVER['arg1']);
echo "\t"; var_dump($_SERVER['arg2']);
echo "\t"; var_dump($_SERVER['arg3']);
さて...これは私の出力です:
START
HELLO FROM TEST
string(3) "one"
string(3) "two"
string(5) "three"
END
HELLO
しかし、私はこの出力が必要です
START
END
HELLO
HELLO FROM TEST
string(3) "one"
string(3) "two"
string(5) "three"
これは、従来のバッファ回避策がob_start()
機能しない可能性がありますか?
注:出力の順序は重要ではありません。操作のためにキャプチャする必要があります