PHP脚本的进度条更新

时间:2011-02-04 15:34:10

标签: php jquery ajax progress-bar

我正在编写一个执行以下操作的小应用程序:

  1. 允许用户上传Excel文件
  2. 从excel文件的每一列读取数据,并根据数据创建图像
  3. 现在我上传文件并调用遍历文件的脚本,生成图像,创建每个图片名称的页面(或数据库条目),然后在屏幕上显示它们。我会首先通知它使用它的进展。我想要PHP脚本,它通过ajax调用图像(我知道该怎么做),但它本质上返回一个值JSON,HTML,纯文本,并不重要。

    这可行吗?我正在使用JQuery,所以也许它的AJAX调用中有一个我不知道的功能?

5 个答案:

答案 0 :(得分:3)

是的,这是可行的。它不是jQuery功能,因为它需要服务器端集成。以下是如何实现它的草图:

  1. 拥有存储键值对的数据库表(或其他等效类型的存储)。如果键和值都是字符串,则最简单。
  2. 启动作业时,生成唯一字符串,该字符串是存储在数据库表中的键和值0。用户还会重定向到包含该唯一字符串的URL。例如。 “/ mysite的/ ERxQl3ew”。
  3. 使用jQuery,用户客户端应该轮询网址“/ getkeyvalue / ERxQl3ew”。此URL应检查数据库并获取作业状态,例如“45.3”表示作业已完成45.3%。如果页面是JSON字符串,这是最简单的。
  4. 只要该作业的状态或进度发生变化,服务器就应使用密钥ERxQl3ew更新该行。
  5. 当作业完成时,服务器可以将行值设置为“final”以指示作业已完成。当客户端javascript看到该值时,它应该将用户重定向到最终目标页面,或以其他方式向用户指示作业已完成。
  6. 也许这听起来比实际更复杂。实施起来相当简单。

答案 1 :(得分:0)

我不这么认为。如果你想检查进度,你必须每隔2秒通过jquery进行检查,我不知道。问题是,您必须异步运行PHP脚本并报告内部进度,您可以通过javascript请求。你不可能上传一些东西,而且,没有做任何事情,你的PHP脚本会回答你的问题

答案 2 :(得分:0)

我建议如下:

  1. 你必须制作一些进度表,例如一个文件,你可以在其中写出格式化过程已经消失的程度
  2. 你还需要一个php,它读取该文件并告诉它从中读取的百分比
  3. 你需要定期用ajax调用这个php,直到它读取100%
  4. 也不要忘记使用一些令牌来管理并发使用。

答案 3 :(得分:0)

jQuery有一个进度条,还有一些PHP脚本返回“progress”,它输出脚本的状态。这是一个我偶然发现的博客。备用PHP缓存(APC)方法以及UploadProgress方法。它们都是PECL包。希望这有帮助

howto-php-and-jquery-upload-progress-bar

答案 4 :(得分:0)

这是可行的。

有几种方法可以做到这一点,但一种非常简单的方法是拥有一个跟踪导入的数据库表。处理行时,更新数据库表,然后让JavaScript每隔几秒钟通过Ajax调用一个PHP脚本,它可以返回总行数和处理行数,或者百分比等。

架构可以像这样简单:

Import ID | Total Rows | Processed Rows
---------------------------------------
100       | 12125      | 1246
101       | 6212       | 1302