Ajax-在后台与运行PHP脚本通信?

Ajax-在后台与运行PHP脚本通信?,php,jquery,ajax,codeigniter,Php,Jquery,Ajax,Codeigniter,我怀疑这个问题看起来太。。。很傻,但我正试图找到一个好的解决方案,我有点卡住了 所以,我的情况如下: 我正在使用Ajax来执行一系列任务。事实上,我正在排队(有时并行,对我来说并不重要)一个或多个请求 以百分比的形式显示进度(执行的X项任务中有1项) 完成后,显示最终结果 我想做什么: 我不希望运行3-4个不同的任务(=通过Ajax异步调用3-4个不同的PHP脚本),而希望只有1个(=1个脚本)-换句话说,将X脚本组合成一个。(这很简单) 我面临的问题: 我怎样才能报告完成百分比(X项

我怀疑这个问题看起来太。。。很傻,但我正试图找到一个好的解决方案,我有点卡住了

所以,我的情况如下:

  • 我正在使用Ajax来执行一系列任务。事实上,我正在排队(有时并行,对我来说并不重要)一个或多个请求
  • 以百分比的形式显示进度(执行的X项任务中有1项)
  • 完成后,显示最终结果
我想做什么:

  • 我不希望运行3-4个不同的任务(=通过Ajax异步调用3-4个不同的PHP脚本),而希望只有1个(=1个脚本)-换句话说,将X脚本组合成一个。(这很简单)
我面临的问题:

  • 我怎样才能报告完成百分比(X项任务中的1项)

有什么想法吗?

如果您的原始ajax将请求放到数据库中,然后启动脚本,那么您仍然有时间(假设请求需要一些时间才能完成)将后续任务放到同一数据库中,由仍在运行的脚本拾取


至于报告它,也许可以运行一个快速jquery来查看队列中有多少项?或者,让task.php文件更新数据库(甚至可能是另一个表),说明它已经完成了多少个作业,还有多少作业当前仍在队列中。

您可以管理队列-在发送AJAX请求之前-将任务放入队列(可以是对象或数组)。使用
complete
函数异步运行AJAX,该函数将在作业完成时从队列中删除作业。
您可以在从队列中删除作业的同时更新进度,也可以使用
setTimeout()
单独处理它,这将检查队列中有多少任务以及总共有多少任务放入队列:%=(已提交的任务-队列中的项目)/submitted_tasks*100

每次任务完成时,我都会在
Memcached
中更新一个键。然后让ajax调用从memcached键获取值


如果不需要向PHP脚本发送太多数据,可以使用“”方法。这样,您就不用使用AJAX,而是插入一个脚本标记,如下所示:

<script src="my_php_script?task1=x&param_t1_1=42&task2=y"></script>
每项任务完成后。无论何时输入命令,浏览器都应执行这些命令。确保在每次任务后调用
flush


调查可能会为您提供有关如何处理客户机-服务器连接的其他想法。

Hmmm。。。我曾经想到过类似的事情-只使用文件作为队列持有者。。。不管怎样,我可能会尝试一下。。。谢谢你的主意!帕维尔,这就是我目前正在做的;我想要的是1个ajax请求=1个任务=1个php脚本(执行多项任务,但仍报告子例程的进度),我认为您不能使用1个脚本监控进度,因为您需要知道已经完成了多少工作-您不能使用php脚本,因为回显它将终止请求。监控脚本将被调用以确定完成了多少工作,例如相对于作业总量,数据库中有多少行被更新/插入/删除。Hmmm。。。这似乎是一个有趣的解决办法。我会调查一下的。谢谢
updatePercent(12);