Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中外部程序的实时输出_Php - Fatal编程技术网

PHP中外部程序的实时输出

PHP中外部程序的实时输出,php,Php,我编写并编译了一个命令行程序abc.exe,运行约10分钟,进行一些计算,并每10秒输出一行结果,如下所示: C:\>abc.exe Result 1 Result 2 Result 3 . . . 下面的php脚本理论上应该实时显示这些结果,因为它们是由程序生成的 <?php $a = popen('abc.exe', 'r'); while($b = fgets($a)) { echo $b."<br>\n"; ob_flush();flush(); }

我编写并编译了一个命令行程序abc.exe,运行约10分钟,进行一些计算,并每10秒输出一行结果,如下所示:

C:\>abc.exe
Result 1
Result 2
Result 3
.
.
.
下面的php脚本理论上应该实时显示这些结果,因为它们是由程序生成的

<?php 
$a = popen('abc.exe', 'r');
while($b = fgets($a)) { 
echo $b."<br>\n"; 
ob_flush();flush(); 
} 
pclose($a); 
?>

然而,我只是在程序执行结束时得到所有结果。为什么会发生这种情况?请注意,如果我用ping 8.8.8.8或tracert 8.8.8.8替换abc.exe,脚本工作起来就像一个符咒。请帮帮我,我已经尝试了这里类似问题中的所有建议,但似乎没有任何效果

也许你没有输出和结束字符?@dudeman你的评论给了我一个提示!我通过在每次printf之后添加fflushstdout来更改C代码。现在脚本按预期工作。非常感谢。