set_time_limit(0);
例如下面这个程序:
for($i=0;$i<10;$i++){
echo $i;
sleep(1);
}
我需要它每秒输出一次,而不是10秒完成后再一起输出1到10。实际情况:
我有一个PHP文件,它一次需要运行两个小时,就是for,foreach,while这种正常的循环。
现在的问题就是页面要运行完了之后才输出结果,这两个小时之内,页面不能关,不能刷新。我都看不到程序的进行情况,比如现在循环到几了,输出了些什么。
所以领导要求,点击运行后,就让它后台工作,页面里需要显示运行情况。
请大家支招,谢谢。
例如下面这个程序:
for($i=0;$i<10;$i++){
echo $i;
sleep(1);
}
我需要它每秒输出一次,而不是10秒完成后再一起输出1到10。实际情况:
我有一个PHP文件,它一次需要运行两个小时,就是for,foreach,while这种正常的循环。
现在的问题就是页面要运行完了之后才输出结果,这两个小时之内,页面不能关,不能刷新。我都看不到程序的进行情况,比如现在循环到几了,输出了些什么。
所以领导要求,点击运行后,就让它后台工作,页面里需要显示运行情况。
请大家支招,谢谢。
解决方案 »
- JavaScript获取的值提交,然后再用PHP的$_GET或$_POST方法获取数据,帮修改下.
- php如何使用ChartDirector
- php下载中,vc6打头的,与vc9打头的区别何在?应该下载哪一个呀?
- 类似于kaixin001图片上传的思路
- solaris10 下如何让PHP能访问Windows下的sql server数据库
- 求助:请问php中时间段的正则表达式怎么写?
- 老生长谈:PHP在LINUX下的安装出错!!!
- 表单textarea内容过长为什么“找不到该页”?
- php微信天气预报开发
- 求解答:为什么用菜刀连jsp要这么多代码,而连php用一行代码就能实现?谢谢!
- 数据显示处理
- php的进来
flush() 函数不会对服务器或客户端浏览器的缓存模式产生影响。因此,必须同时使用 ob_flush() 和 flush() 函数来刷新输出缓冲。个别web服务器程序,特别是Win32下的web服务器程序,在发送结果到浏览器之前,仍然会缓存脚本的输出,直到程序结束为止。有些Apache的模块,比如mod_gzip,可能自己进行输出缓存,这将导致 flush()函数产生的结果不会立即被发送到客户端浏览器。甚至浏览器也会在显示之前,缓存接收到的内容。例如 Netscape 浏览器会在接受到换行或 html 标记的开头之前缓存内容,并且在接受到 </table> 标记之前,不会显示出整个表格。
将以下代码在Apache上运行,能看到1S输出一行,但在IIS上运行是一次性输出。<?php
set_time_limit(50);
for($i=0;$i<=100;$i++){
echo $i.'<hr />';
flush();
ob_flush();
sleep(1);
}
?>
--------
output_buffering = 4096
------程序里:
echo str_pad('',4096);
ob_flush();
flush();
另外,要程序完全不受浏览器控制的话,可能就只有用shell或者直接php_cli来完成,同时把执行情况写入数据库,另外起一个页面查询数据库,得到现在的状态。因为这个页面本身没有执行完shell程序,也不可能去做查询的动作了。