【发布时间】:2013-06-18 04:44:46
【问题描述】:
情况:
我正在使用 $.ajax() POST 向 php 脚本发送请求,该脚本将大约 400,000-500,000 行插入到数据库中。这始终需要大约 3.5 - 4 分钟。 (在此期间,请求处于 PENDING 状态)。
问题:
我需要一些方法来显示页面上的进度。 (比如一个 %)。我尝试在每 5 秒左右检查一次的 setInterval 中使用 $.ajax(),但它们似乎会在第一个(更长的)$.ajax() 完成时累积起来。
问题:
$.ajax() 默认不是异步的吗?这不应该意味着可以在任何时间以任何顺序发送请求,并且应该在任何时间以任何顺序接收响应吗?这甚至与异步有关吗?有没有办法从一个请求中定期发回“半响应”?或者我不能在有待处理的请求/响应时发送和接收请求/响应? (见下图)
提前致谢!!!
【问题讨论】:
-
图表+1。 :) 您是否考虑过对数据进行分块,即每 10k 行发送单独的请求?
-
+1 用于解释。你试过 async true..
-
我同意上面的 Zsolt,考虑将您的数据分块为几个较小的请求,这样可以为您提供更快的响应,您还可以计算已完成请求数的百分比。同样在单个请求中上传大数据,虽然是异步的,但也会导致性能下降。
-
@ZsoltSzilagy,我正在考虑,但是,实际上大约有 8 个不同的表构成了 500,000 多行。有些表有 3 行,有些表有 300,000+。我可能仍然可以将其分块,但并不想处理决定分块的数量等。看起来乐观的答案可能就是这样。
标签: php jquery mysql ajax insert