如何实现:php调用shell的同步输出,shell没有完全执行完毕,就将shell执行的结果打印到浏览器上?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现:php调用shell的同步输出,shell没有完全执行完毕,就将shell执行的结果打印到浏览器上?相关的知识,希望对你有一定的参考价值。
参考技术A php 的几个函数ob_flush(); 冲刷出(送出)输出缓冲区中的内容
popen() 打开进程文件指针追问
能不能具体点
追答这个东西不管能不能实现,对web语言来说都不是一种好的应用方向,你们为什么会有这个需求呢,有没有考虑过用其他的实现方式
&1", 'r');
while(!feof($handle))
$buffer = fgets($handle);
echo "$buffer\n";
ob_flush();
flush();
pclose($handle);
?>
这是什么...
追答tail -f /etc/httpd/logs/access.log 2>&1 //shell命令,一直刷新显示apache访问日志的最后几行,这个命令会一直不停的运行。。 这里可以替换为你的shell命令
$shellCmd = '你的shell 命令‘;
$handle = popen($shellCmd , 'r');//以只读方式打开shell命令的进程指针
while(!feof($handle)) //如果进程没有结束就一直循环
$buffer = fgets($handle);//输出进程执行的结果
echo "$buffer\n";
ob_flush();//输出缓冲区中的内容 用了这个就会在浏览器上立即显示
flush();
上面的例子就是能够实现在浏览器里监控 apache访问日志的功能,(缺点 长连接,打开的时候能够看到那个加载的圈圈一直在转。。。耗资源,不适合用于多并发)
如何让php执行shell
如何让php执行shell命令,或者shell脚本文件?
参考技术A php给我们提供了system(),exec(),passthru()这三个函数来调用外部的命令.虽然这三个命令都能执行linux系统的shell命令,但是其实他们是有区别的:
system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
相同点:都可以获得命令执行的状态码
例子:system("/usr/local/bin/webalizer/webalizer");本回答被提问者和网友采纳
以上是关于如何实现:php调用shell的同步输出,shell没有完全执行完毕,就将shell执行的结果打印到浏览器上?的主要内容,如果未能解决你的问题,请参考以下文章