PHP脚本完成运行后显示“完成”文本

时间:2012-04-13 12:22:34

标签: php javascript html

如何在脚本完成加载时输出一些文本。

我的脚本获取网址列表的元数据,我想要发生的是:

点击开始,文字显示正在加载 当脚本完成时,它说完了

用户可以单击导出按钮并获取数据!

1 个答案:

答案 0 :(得分:1)

由于PHP和Web的工作方式,你无法真正做到这一点。基本上,PHP的输出在被发送到客户端之前被缓冲,所以即使你将print "Finished"放在脚本的末尾,客户端也会等待响应,直到整个脚本完成,然后整个输出立即显示。

还有脚本超时,这意味着如果您的脚本花费的时间超过配置的完成时间(默认为30秒),则会中止并向客户端发送错误消息。

最优雅的解决方案是在脚本之外进行实际工作(如果花费的时间超过一分钟,请考虑使用cron作业),并使用文件或数据库在脚本和cron作业之间进行通信。所以你要做的是:

  1. 脚本将数据添加到处理队列并显示“正在加载,请稍候”
  2. cron job获取数据并开始处理,更新队列中的'完成百分比'字段
  3. 脚本使用javascript每10秒左右重新加载一次,从队列中读取更新后的状态并显示
  4. 当作业完成时,cron作业标记队列中完成的作业并进入睡眠状态,直到有更多作业可用;脚本看到作业已完成,显示“已完成”并停止重新加载。
  5. 这是基本设置;为了获得更舒适的用户体验,您可能希望使用某种Ajax心跳而不是不断重新加载。