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


    多谢.
页: 1 [2] 3
查看完整版本: 怎样把服务器上的ping命令运行过程在web页面中动态展示