可能重复:
Show progress for PHP long script
我有一个php脚本,可以根据请求生成大型pdf文档。这通常需要1-2分钟,唯一让用户知道完成的方法是在整个过程完成时发送电子邮件。
我希望在生成文件时向用户显示某种进度条。完成这项任务的最佳方法是什么?我唯一想到的是pdf生成脚本应该将数据保存在数据库中(我已经在项目中使用了mysql),而在客户端,我可以包含ajax请求,该请求每5秒轮询一次进度数据,并将其显示给用户。所以可能会有两个ajax请求:一个启动pdf生成脚本,另一个让用户查看进度。
我想我可以这样做,但是有什么标准的方式我可能不知道吗?

最佳答案

你提议的方法:
…可能是最简单的,而且它也可以在已知的基础上运行,因此您可以轻松地处理和调试它。
对此,我只能补充说,您可以使用Foo/Exc/PASTION,而不是启动PDF生成的Ajax调用。
一种更优雅的(读起来:复杂的)方法:
PHP Gearman是一个独立的服务器,可以运行在PHP通信库的机器上。
可以运行Galman守护进程,给它一个任务,并为进度条向数据库写入数据。此设置的优点是fork/exec/passthrough是昂贵的操作—gearman作为守护进程已经启用,因此它可以处理对php工作者的exec调用,并且触发脚本需要工作较短的时间。
我不确定它是否有一个通信api来询问gearman某个工人的状态,从而避免在鸡尾酒中添加数据库。

10-06 12:26
查看更多