LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1668|回复: 8

php中怎样使system的输出立即发送到客户端?

[复制链接]
发表于 2006-11-17 15:02:41 | 显示全部楼层 |阅读模式
[php]
ob_implicit_flush() ;                           
system("ping baidu.com -c 20");
[/php]

结果总是system调用完成后才输出所有结果,我需要ping每次输出一行信息,则立即发送到客户端.
这个怎么弄?
Post by function.system.php

The system() call also tries to automatically flush the web server's output buffer after each line of output if PHP is running as a server module.
>>>>>>>>>>>>>>>>>>>>>>>>>>
<pre>
system("ping baidu.com -c 20");
</pre>可以按上述要求输出.
使用重定向后,则不行,ping baidu.com -c 20|sed ...
发表于 2006-11-17 16:50:11 | 显示全部楼层
好像不太可能,
只能做一个假象吧?
for($i=0;$i<20;$i++)echo `ping -t 1 baidu.com`;
回复 支持 反对

使用道具 举报

发表于 2006-11-17 16:51:28 | 显示全部楼层
因为php只是负责执行,httpd才负责输出,一句代码只有执行完了才会被考虑到是否输出啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-17 17:15:33 | 显示全部楼层
想到一个办法,把ping baidu.com -c 20放到后台,输出重定向到临时文件里,然后php里面再循环读这个文件进行输出,感觉有点麻烦~
回复 支持 反对

使用道具 举报

发表于 2006-11-17 17:39:09 | 显示全部楼层
会很浪费服务器资源阿!
file 1:index.php 内容:
1)输出一个网页,带有ajax的script和ajax的区域以及定时(每秒?)读入ajax.php的内容
2)执行`ping -t 20 baidu.com > /tmp/a.txt`;
file 2: ajax.php 内容:
读取/tmp/a.txt内容nl2br,htmlspecailchars处理后输出

但是要考虑到网速要够快(要和ping的执行速度差不多),否则这个刷新会感觉不出来。
楼主要做这样的东西干嘛?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-17 17:45:28 | 显示全部楼层
做一个类似下面的东西
http://www.ipv6tools.com/tools/t ... 3Ada8%3A205%3A%3A10
能不断输出命令的结果,也不清楚*.ch文件是啥语言做的.
回复 支持 反对

使用道具 举报

发表于 2006-11-17 18:08:58 | 显示全部楼层
如果是这样的效果的话,我觉得ajax+一次执行一个ping的php就可以做到了呢
回复 支持 反对

使用道具 举报

发表于 2006-11-18 00:44:56 | 显示全部楼层
web应用开发,有可为,有可不为.
回复 支持 反对

使用道具 举报

发表于 2006-11-20 09:55:13 | 显示全部楼层
这个....
ob_flush();
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表