我怀疑这个问题看起来太......愚蠢,但我正试图让我的头脑找到一个很好的解决方案而且我有点卡住了。
所以,这是我的情况:
我正在尝试做什么:
我面临的问题:
有什么想法吗?
答案 0 :(得分:3)
每次任务完成后,我都会更新Memcached
中的密钥。然后你会让你的ajax调用只是从你的memcached键中获取值。
答案 1 :(得分:1)
如果您的请求被原始ajax放入数据库,然后启动脚本,您仍然有时间(假设请求需要一些时间才能完成),以便将后续任务放入同一个数据库中由仍在运行的脚本拾取。
至于报告它,也许运行一个快速的jquery来查看队列中有多少项?或者让task.php文件更新数据库(甚至可能是另一个表),说明它已经完成了多少个工作以及当前还有多少个工作。
答案 2 :(得分:1)
如果您不需要向PHP脚本发送大量数据,则可以使用“long poll”方法。有了这个,您不使用AJAX,而是插入如下脚本标记:
<script src="my_php_script?task1=x¶m_t1_1=42&task2=y"></script>
然后,PHP文件可以发回一个像
这样的JavaScript命令updatePercent(12);
每个任务完成后。这些命令应该在浏览器进入时执行。确保在每个任务后调用flush
。
调查Comet可能会为您提供有关如何处理客户端 - 服务器连接的其他建议。
答案 3 :(得分:0)
您可以在发送AJAX请求之前管理队列 - 将任务放入队列(可以是对象或数组)。使用complete
函数异步运行AJAX,该函数将在完成后从队列中删除作业。
您可以同时更新进度并从队列中删除作业或使用setTimeout()
单独处理它,这将检查队列中有多少任务以及总共放入了多少任务:%=(submitted_tasks - items_in_queue)/ submitted_tasks * 100