如何创建附加到服务器端进程的进度条?

时间:2010-11-17 16:05:01

标签: php joomla progress-bar

我们刚刚遇到云主机问题 - 他们已经改变了他们的apache设置以强制缩短页面超时,现在在某些过程(报告创建等)中需要超过15秒(这是客户端很好;我们正在处理大量数据)我们收到错误:

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request POST /administrator/index.php.

Reason: Error reading from remote server

我已经确认我们的代码仍然在后台正常运行,并与主机进行了双重检查,这实际上只是一个超时。他们的建议是创建一个与后端代码相关联的进度条;就这样,阿帕知道事情还在继续,并且不会超时。

我已经完成了与页面加载事件关联的进度条(即加载所有图像时等),但不知道如何创建与后端代码关联的进度条。这是一个用mvc php编写的Joomla站点,导致问题的代码是模型的一部分 - 可能涉及的各个部分都在进行大量的查询。表格被正确编入索引并优化查询;问题不在于如何使流程花费更少的时间 - 因为我们在云服务器上,超时限制可以在明天更改为5秒而不会发出任何警告。我需要的是有人指出我如何创建进度条的正确方向,因此它实际上与模型中运行的函数相关联。

有什么想法吗?就这一点而言,我是一个完全的初学者。

2 个答案:

答案 0 :(得分:0)

无论后台进程做什么,都应该更新类似文件或数据库条目的内容,每隔X秒或在其流程中的设置位置完成百分比。然后,您可以每隔X秒从Javascript调用另一个脚本,并返回通过数据库记录完成的百分比。

updateRecord(0);
readLargeFile();

updateRecord(25);
encodeLargeFile();

updateRecord(50);
writeLargeFile();

updateRecord(75);
celebrate();

updateRecord(100);

答案 1 :(得分:0)

我能想到的最简单的方法是使用两个步骤:

  1. 当模型到达关键点时,让模型将事件写入文本文件或其他内容。
  2. 使用一些ajax方法让页面定期检查该文件是否有更新,并更新进度条。