gpt4 book ai didi

php - echo 逐行执行命令的结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:13 26 4
gpt4 key购买 nike

我有一个 php 文件,它使用 shell_exec() 在 linux 上运行一个命令。此命令需要一些时间才能完成,并且在每个阶段都会打印出一些内容。我希望 php 在打印时回显命令打印的每一行

我发现使用 ob_flush()flush(),可以做出这种分块的 http 响应,但我无法在打印时回显行,因为 shell_exec() 会等待命令完成,然后返回输出。这样,当命令立即终止时,将回显行。

我认为我应该避免为此目的使用 shell_exec()。我还能如何实现这一目标?

最佳答案

<?php
$cmd = "ping www.google.com";

$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("pipe", "w") // stderr is a pipe that the child will write to
);
flush();
$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());
echo "<pre>";
if (is_resource($process)) {
while ($s = fgets($pipes[1])) {
print $s;
flush();
}
}
echo "</pre>";

Source

关于php - echo 逐行执行命令的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26950928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com