如何让一个PHP脚本启动另一个并捕获其输出?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了如何让一个PHP脚本启动另一个并捕获其输出?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
这有点棘手所以请耐心等待:

>我有一个从命令行启动的PHP脚本a.PHP,并通过STDIN向它提供数据
>我有一个PHP脚本b.PHP
>我想让a.PHP启动b.PHP并捕获其输出.
>此外,a.PHP必须将STDIN转发给b.PHP

是否捷径可寻?

解决方法

为了捕获另一个程序的stdout(PHP或不是),你可以使用反引号:
http://php.net/manual/en/language.operators.execution.php.
例如:

@H_126_21@$boutput = `PHP b.PHP`;

要捕获stdin,请执行以下操作:

$ainput = file_get_contents('PHP://stdin');

最后,要将字符串的内容传递给外部程序,请使用proc_open,如jeremy的回答所示.
具体来说,这是你的a.PHP应包含的内容

$ainput = file_get_contents('PHP://stdin');
$descriptorsPEc = array(
        0 => array("pipe","r"),1 => array("pipe","w"),2 => array("pipe","w")
);
$PRocess = proc_open('PHP b.PHP',$descriptorspec,$pipes);
fwrITe($pipes[0],$ainput);
fclose($pipes[0]);
echo stream_get_contents($pipes[1]); # echo output of "b.PHP < stdin-From-a.PHP"
fclose($pipes[1]);
proc_close($process);

脚本宝典总结

以上是脚本宝典为你收集整理的如何让一个PHP脚本启动另一个并捕获其输出?全部内容,希望文章能够帮你解决如何让一个PHP脚本启动另一个并捕获其输出?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。