2012-05-30 248 views
2

我不是http请求方面的专家,所以这个问题对于一些人来说可能是微不足道的。我向php脚本发送了一个请求,这需要花费很多时间来处理文件并返回响应。在脚本完成其任务以让用户了解进程状态之前,有没有办法发送响应?由于此任务可能需要几分钟时间,所以我想在流程的关键部分完成时通知用户。http请求部分响应

注:我不能打破这一请求转换成其他几个人

我可能没有正确的做法在这里,如果这样做,你有其他的想法如何可以这样处理?

回答

1

从技术上说是的,但它需要你对http-stack进行细粒度的控制,在典型的php设置中你可能没有。我建议你考虑其他解决方案(如制作请求启动任务 - 然后轮询以获取有关的最新进展)

0

http://www.redips.net/javascript/ajax-progress-bar/

这里是一个伟大的一篇文章,越过创建AJAX进度条使用与PHP。

让我知道它是否没有意义!

+0

我不是在寻找进度条。 – slash197

+0

我唯一能想到的就是让php脚本存储会话ID和进度值(但是你想计算它)在一个用异步方式检查ajax的数据库中。 这些可能是关联状态而不是数字。例如,status ='正在执行第一个任务'... status ='第一个任务完成,开始第二个任务'...等 但这个想法仍然有第二个Ajax调用来检查脚本正在更新的内容其过程 –

0

我认为长时间处理请求的最佳方式是cron作业。你可以发送请求来创建'任务'并通过cron作业来捕获任务。 Cron作业可以在工作时更改任务状态,并且可以通过间隔请求检查任务状态。我无法想象以另一种方式告知用户有关请求处理的方式。只要你的回应你的头被发送和PHP停止。

编辑:应该指出的是,Cron作业只在Linux服务器上可用。 Windows服务器需要访问大多数Web主机不允许的任务调度程序。