当前位置: 首页 > 面试题库 >

PHP阅读shell_exec实时输出

段干靖
2023-03-14
问题内容

我只是shell_exec在Linux服务器上试验PHP
。这是一个非常酷的功能,到目前为止,我真的很喜欢它。有没有办法查看命令运行时正在进行的实时输出?

例如,如果ping stackoverflow.com运行时正在ping通目标地址,则每次ping通时,都使用PHP显示结果吗?那可能吗?

我希望看到缓冲区正在运行时进行实时更新。也许不可能,但肯定会很好。

这是我正在尝试的代码,我尝试过的所有方式都始终在命令完成后显示结果。

<?php

  $cmd = 'ping -c 10 127.0.0.1';

  $output = shell_exec($cmd);

  echo "<pre>$output</pre>";

?>

我尝试过将echo零件循环放置,但仍然没有运气。有没有人建议将其显示在屏幕上,而不是等到命令完成后再显示?

我试过execshell_execsystem,和passthru。完成后,每个人都会显示内容。除非我使用了错误的语法,否则不会正确设置循环。


问题答案:

读取过程的输出popen()是正确的方法。您的脚本将与程序并行运行,并且您可以通过读取和写入脚本的输出/输入来将其与文件进行交互。

但是,如果您只想将其转储给用户,则可以直接使用并使用passthru()

echo '<pre>';
passthru($cmd);
echo '</pre>';

如果要在程序运行时在运行时显示输出,可以执行以下操作:

while (@ ob_end_flush()); // end all output buffers if any

$proc = popen($cmd, 'r');
echo '<pre>';
while (!feof($proc))
{
    echo fread($proc, 4096);
    @ flush();
}
echo '</pre>';

此代码应运行命令,并在运行时将输出直接推给最终用户。



 类似资料:
  • 当我试图使用执行PHP脚本时,它不起作用。 在错误日志文件中显示: PHP警告:shell_exec()[function.shell exec]:无法执行'PHP/home/snabsam/public_html/。。。。。 系统 Centos shell_exec与clamscan配合使用 与clamav的功能配合使用 但它没有执行PHP脚本 我检查过的东西: PHP是off 不存在于在php

  • 问题内容: 我努力理解之间的区别和… 我一直习惯于执行服务器端命令,何时使用? 是否只是一个速记?较少的参数似乎是同一件事。 问题答案: 以字符串形式返回所有输出流。默认情况下返回输出的最后一行,但是可以将所有输出作为指定为第二个参数的数组提供。

  • 我有一个PHP脚本,用于从供应商合作伙伴导入数据。它需要做的一件事是通过shell_exec()调用另一个脚本,然后处理一个图像文件并将其上传到AmazonS3存储桶。我现在正在终端上观看这个脚本的输出,过了一会儿,我看到一系列消息,内容如下: 奇怪的是,同一个脚本在这个脚本中被多次调用,开始工作,然后停止。它也是从其他脚本调用的,在这些脚本中运行良好。当我复制它无法运行的命令并将其粘贴到我自己时

  • 问题内容: 我有一个很大的PDF文件,它是建筑物的平面图。它具有用于所有办公家具的图层,包括座位位置的文本框。 我的目标是使用PHP读取此文件,在文档中搜索文本层,获取其内容和文件中的坐标。这样,我可以绘制出座位位置-> x / y坐标。 有没有办法通过PHP做到这一点?(如果需要的话,甚至可以是Ruby或Python) 问题答案: 签出FPDF(使用FPDI): http://www.fpdf.

  • 所以我有一个带有shell_exec命令的index.php文件,当我在ubuntu的终端上运行它时,它工作得很好,但是当上传到命名堆托管时,它就不工作了。 http://www.logh.info/这里是网站,是的,我100%确定的路径,以该网站。sh文件是正确的

  • 我目前有一个PHP页面,我的网络服务器服务。为了显示我需要在页面上显示的所有信息,我需要从外部python脚本输出。所以我一直在使用php的exec()命令来执行python脚本,并捕获字符串数组中的输出,如下所示: 然而,从来没有任何要打印的条目,但是当我直接在服务器的控制台上运行该命令时,它将正确输出。我已经尝试在我正在执行的网页上回显命令,这是正确的命令。我认为它唯一能做的就是exec()不