Cyberman.Wu
发表于 2013-08-02 08:24
回复 10# sohusina
好像和画图没关系吧,是起了一个创建一个进程并通过管道通信,程序中是通过pipe读它的命令的输出并添加到buffer中,最终返回buffer。但Linux的ping命令缺省是永不退出的,不知道这个程序测试一下会是什么样的结果。
对于可终止的命令,也不一定要用pipe;但对于这种一直跑的命令,用pipe可以在它没有执行结果之前获取它的输出,但对于ping命令,应该还要做到一边得到ping的输出,一边输出到前台网页中显示出来,并且脚本还不能终止。
幽烛
发表于 2013-08-02 10:40
本帖最后由 幽烛 于 2013-08-02 10:41 编辑
只要稍微修改,如使用flush,就可以达到逐行输出效果。回复 10# sohusina
幽烛
发表于 2013-08-02 10:45
嗯~linux下ping是不会自动终止,所以使用的时候ping要加参数控制次数的,其它做法就不太清楚了,呵呵回复 11# Cyberman.Wu
bacy001
发表于 2013-08-02 11:15
Mark一下,回头研究!
Cyberman.Wu
发表于 2013-08-04 11:56
回复 13# 幽烛
控制次数的话,其实直接用system()也可以。标准的request-response式的WEB应该是无法达到这种在命令行下使用的结果的,不知道Ajax发起一个请求能否一直不保持连接不退出,因为没用过不太清楚。
ChpiTer
发表于 2013-08-04 19:40
作为一个初学者,遇到了和楼主一样的问题
plumdavid
发表于 2013-08-04 21:10
回复 13# 幽烛
需求是手动结束ping命令,我是用kill命令终止的.
witer666
发表于 2013-08-05 10:01
<?php
2 ini_set('display_errors', 1);
3 error_reporting(E_ALL);
4 ob_start();
5 ob_implicit_flush(true);
6 while(true) {
7 exec("ping 127.0.0.1 -c 1", $output);
8 echo $output."\n";
9 unset($output);
10 ob_flush();
12 sleep(1);
13 }
14 ?>
yifangyou
发表于 2013-08-11 22:09
没有那么复杂了
把ping的结果输出到一个文件里去,然后php把这个文件读出来即可,要动态输出的话,每隔几秒钟读取一次即可
ping www.sina.com > /tmp/ping.log
plumdavid
发表于 2013-08-11 22:40
回复 19# yifangyou
多谢.