0

当我的脚本完成加载时,如何获得一些要输出的文本。

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

单击开始,文本显示加载脚本完成时显示已完成

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

4

1 回答 1

1

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

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

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

  1. 脚本将数据添加到处理队列并显示“正在加载,请稍候”
  2. cron 作业获取数据并开始处理,更新队列中的“完成百分比”字段
  3. 脚本每隔 10 秒左右使用 javascript 重新加载一次,从队列中读取更新的状态并显示
  4. 作业完成后,cron 作业将队列中的作业标记为已完成并进入睡眠状态,直到有更多作业可用;脚本看到作业已完成,显示“已完成”并停止重新加载。

这是基本设置;为了获得更舒适的用户体验,您可能希望使用某种 Ajax 心跳而不是不断地重新加载。

于 2012-04-13T12:31:08.010 回答