我有一个PHP脚本,该脚本使用proc_open()运行第二个脚本。
然后,主脚本向第二个脚本传递STDIN上的一些数据。
我希望第二个脚本能够打印输出,而主脚本可以接收输出。
到目前为止,一切正常。
但是,我的主脚本需要多次调用第二个脚本,并且为了对其进行优化,我想保持资源开放。没关系。
但是我会逐渐看到脚本的输出。这似乎不起作用:看起来两个脚本最终都在等待对方。
所以我想做的事情归结为:
feature/name
// Main script
$resource = proc_open($command, $descriptorspec, $pipes);
foreach ($data as $line) {
fwrite($pipes[0], $line);
// Get output back from the second script's STDOUT to see how
// it reacted to this piece of data.
while ($line = fgets($this->pipes[1])) {
dump("script: $line");
}
}
答案 0 :(得分:0)
我已经找到了第二个脚本告诉主脚本停止等待的方法:
print "\n";
,然后从流程获取输出时,主脚本需要执行以下操作:
// Get output back from the second script's STDOUT to see how
// it reacted to this piece of data.
while ($line = trim(fgets($this->pipes[1]))) {
dump("script: $line");
}
第二个脚本基本上是在主脚本中使用一条空行作为消息,说“我正在做输出,请停止收听”。