如何获得Ajax请求进度?

时间:2010-10-04 08:14:19

标签: jquery ajax cakephp

我正在开发一个在CakePHP中构建并使用jQuery的项目。我有一个需要由ajax请求调用的脚本。此请求在数据库中进行了许多操作,并且花费了太多时间。在执行之间,它将其状态写入单独的文件中,以便我可以看到脚本执行的状态。每次打开文件时都会在其中写入执行状态然后关闭文件,以消除文件锁定的问题。
现在当这个脚本正在进行时,我发送另一个ajax请求,它只读取该文件,并在每20秒后定期返回内容。现在问题是当第一个ajax请求忙于mysql时,对服务器的任何其他请求都将停止。 Mysql创建所有这些请求的进程并将此请求置于睡眠模式。我认为它由于框架,导致每个请求框架都需要检查数据库。当第一个主脚本完成所有其他请求时也完成 有什么方法可以让我获得ajax进展吗?如果我错了,请纠正我...... !!!提前谢谢。

2 个答案:

答案 0 :(得分:0)

如果您正在使用jQuery来满足您的Ajax需求,您可能需要查看$ .ajax方法的“async”选项。我看到它的方式你想要显示当前正在处理的请求的进度。现在,这有一个缺点,它会锁定你正在做的其他事情,但它会正确显示每个“线程”的进度。我不熟悉Cake,因为我使用Kohana。 现在,mysql把东西放到“睡眠”是不太可能的,它宁愿排队。 这里没有真正的“进展”,我建议使用类似$ .ajaxStart或$ .ajaxStop(无论在jquery中调用的内容),只要从服务器获得响应,就可以隐藏进度元素。

答案 1 :(得分:0)

我做到了。我只需要调用读取文件的脚本并从单独的php文件中发回数据。无需调用框架...... !!!