gpt4 book ai didi

php - ExtJS 4 中多个同时运行的 ajax 请求

转载 作者:可可西里 更新时间:2023-11-01 13:23:20 25 4
gpt4 key购买 nike

问题

我有一个长时间运行的导入作业,我从一个 ajax 请求开始,可能需要几分钟才能完成请求。当第一个 ajax 请求正在运行时,我想查看服务器以了解导入的进度,第二个请求将每 2 秒左右完成一次。

当我使用 Ext.Ajax 方法时,请求似乎被链接起来 - 第一个 ajax 请求(导入)一直运行到它完成,然后第二个(导入更新)被触发。

我看到 Ext.Ajax 是单例的,所以也许这就是原因。因此,我尝试使用 Ext.create('Ext.data.Connection') 创建自己的 Connection 对象,但它不起作用。

我的当前请求链是:

  • 第一个请求 - 开始
  • 第一个请求 - 结束
  • 第二个请求 - 开始
  • 第二个请求 - 结束

但它应该是:

  • 第一个请求 - 开始
  • 第二个请求 - 开始
  • 第二个请求 - 结束
  • ...可能会有更多的第二次请求
  • 第一个请求 - 结束

问题

浏览器应该能够处理多个请求,ExtJS 内部一定有限制,但我没有找到?


2011-10-16 更新

回答

问题不是 ExtJS - 抱歉!这是 PHP,我的第一个脚本与 session 一起工作,第二个脚本也试图访问 session 。并且因为 PHP session 是基于文件的, session 文件从第一个请求脚本被锁定,第二个请求脚本必须等到第一个请求脚本释放 session 锁。

我在每 x 行之后添加到我的导入过程(第一个脚本)中的这段代码解决了这个问题:

 $id = session_id();
session_write_close();
sleep(1);
session_start($id);

因此它停止并重新加载 session ,并且其他脚本能够 Hook 并获取 session 信息。

最佳答案

单例或非单例甚至不会改变 Ext.Ajax 的工作方式。我认为这可能是由于编码(您是否等待调用完成?)

Afaik,我以前在多次调用时从未遇到过这个问题。唯一占用调用的是服务器(PHP),它不支持并行处理并导致延迟,并生成这样的模式

  • 调用 1 - 开始
  • 调用 2 - 开始
  • 调用 1 在服务器中得到处理,调用 2 排队
  • 调用 1 - 完成
  • 调用 2 在服务器中得到处理
  • 通话 2 - 完成

如果调用 1 比调用 2 需要更多的时间来处理,那将是灾难性的。

编辑:

我写了this little demo只是为了让你感受它是如何工作的。看看 :) 花了我半个小时哈哈!

关于php - ExtJS 4 中多个同时运行的 ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7898948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com