php 如何返回当前运行状态 在UI的一次请求中,PHP响应可能要几分钟之久。我想PHP在响应的过程中,返回一些提示给UI,例如一分钟时返回“分析指标1”,两分钟时返回“分析指标2”。 请教各位大虾要怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 换成多次请求 类似下面的代码if($_GET['p']=='1'){ echo '动作1已经处理完';}else if($_GET['p']=='2'){ echo '动作2已经处理完';}这样一次请求不会处理比较长的时间 很快就能看到结果 echo的值不是要等待完成响应请求才一次性返回给浏览器吗?那UI一次获取到这些数据也没意义了,执行都结束了 本帖最后由 xuzuning 于 2013-02-01 11:47:50 编辑 echo 数据立即送入浏览器,使用ob_flush 和 flush,参照 http://www.cnblogs.com/zemliu/archive/2012/05/11/2495293.html不过我试验的结果是,跟浏览器有很大关系。在firebug的网络面板可以看到数据是分别返回,但chrome的调试器则要等到所有数据都返回才能看到返回的数据。如果要让返回的数据实时显示在页面上,比如返回“<p>Line start</p”,则要先让浏览器的缓存满,即缓存满了之后,后面接收的line Start 会马上显示,不管chrome还是firefox。而且不知道JS(前台用EXT框架)能不能实时获取到这些数据。所以这种方式可能不太可靠。 在同一个请求中返回运行状态数据和结果数据,UI不好处理。所以拆分为两个请求:分析请求和获取运行状态请求。响应的两个PHP例程通过临时文件交互,分析例程在运行过程中往文件中写状态,获取状态例程则读文件。UI先发送分析请求,然后定时发送获取运行状态请求,直到分析例程结束。这样涉及到文件读写同步问题,以及一些异常情况:分析例程意外中断退出,临时文件没有删除或清空,影响下次的运行等 也可以通过session在两个请求之间传递进度信息。不过感觉这种信息放在session不太好 表单提交不知道为什么出错了,我尝试echo $_POST["submit"]提示我submit不存在 php能不能在构造函数中析构? 公司网站上线了,大家多支持 SQL执行不成功...非常非常奇怪...求高手解答...在线等 请问关于PHP的url变量问题 linux下安装PHP出现的问题,请帮忙,我快不行了 局域网不能远程登陆phpmyadmin 求验证表单的方法 mysql乱麻问题?急 请问php5.2 是做什么用的? 求PHP解析XML文件的代码。 100分求。谢谢。 亲,帮忙给看看这个类哪里出问题了?出不来表格啊???
echo '动作1已经处理完';
}else if($_GET['p']=='2'){
echo '动作2已经处理完';
}这样一次请求不会处理比较长的时间 很快就能看到结果
在firebug的网络面板可以看到数据是分别返回,但chrome的调试器则要等到所有数据都返回才能看到返回的数据。
如果要让返回的数据实时显示在页面上,比如返回“<p>Line start</p”,则要先让浏览器的缓存满,即缓存满了之后,后面接收的line Start 会马上显示,不管chrome还是firefox。而且不知道JS(前台用EXT框架)能不能实时获取到这些数据。
所以这种方式可能不太可靠。
所以拆分为两个请求:分析请求和获取运行状态请求。
响应的两个PHP例程通过临时文件交互,分析例程在运行过程中往文件中写状态,获取状态例程则读文件。
UI先发送分析请求,然后定时发送获取运行状态请求,直到分析例程结束。这样涉及到文件读写同步问题,以及一些异常情况:分析例程意外中断退出,临时文件没有删除或清空,影响下次的运行等