创建数据处理进度条的最佳方法是什么?

时间:2011-12-10 14:35:38

标签: php jquery mysql

这是我的情况:

我上传了一个Excel文件,每行都被读入一个表格。然后在用户获得反馈之前处理表中的每一行。此处理可能需要一些时间。

如何创建一个进度条,显示已处理了多少%的行?

我的解决方案是使用MySQL,PHP和jQuery。

更新
似乎人们不理解我的问题。

我不是在问我如何实施jQuery progress bar,这是最简单的部分 我问我需要在PHP中实现什么逻辑才能在每次插入后发回数据。

点击表单上的Submit后,会发送数据+文件进行处理。对于插入的每一行,我都想以某种方式更新进度条。

由于表单数据被提交到它自己的页面,我不知道如何使用jQuery进度条 - 即使我想使用它。

如何在处理过程中重新发送数据?我是否使用某种CRON

2 个答案:

答案 0 :(得分:2)

我不知道这是否适用于您当前的解决方案,我认为我不会提供任何示例代码,因为我看不到您的代码。但我至少会打断我的想法。

由于您使用的是MySQL,因此您可以创建一个表来保存处理的进度数据。 例如,您可以存储“会话ID”,“文件中行数的总计”和“已处理的最后一行”。

在处理文件的行时,您可以INSERT ... ON DUPLICATE KEY UPDATE进度表(“会话ID”作为您的密钥)。

当然,如果你有一个大文件,这可能会在你的数据库中进行比你真正想要的更多的查询,所以你可以例如每10行更新一次表,然后在处理最后一行时最终更新以减少数量调用您的数据库。

当所有这一切都发生时,您的用户将在您的jQuery UI进度条的页面上等待。

此页面可以对PHP文件进行定时AJAX调用,该文件将查询进度表以获取“已处理的最后一行数”和“总行数”。

通过AJAX调用返回此信息后,您可以使用AJAX成功函数使用“最后一行更新”和“总行数”进行一些简单的数学运算来更新jQuery进度条。

当进度条更新为100%时,AJAX可以进行最后一次调用以从进度表中删除该行。

这不完美,但至少这是一个想法。

对不起,我无法提供任何示例代码,但我觉得如果没有看到您当前的实现并且不知道这是否是您正在寻找的解决方案,那将是浪费时间。

答案 1 :(得分:0)

我使用jQuery UI套件。有一个很好的progessbar组件:http://jqueryui.com/demos/progressbar/#animated

编辑: 其他问题和示例:Jquery UI Progress Bar with PHPhttp://www.phphelp.com/forum/index.php?topic=9921.0