Php extjs4中多个同时运行的ajax请求
问题 我有一个长时间运行的导入作业,从ajax请求开始,可能需要几分钟才能完成请求。当第一个ajax请求运行时,我想查看一下服务器,以了解导入完成了多远,第二个请求将每隔2秒左右完成一次 当我使用Php extjs4中多个同时运行的ajax请求,php,extjs4,Php,Extjs4,问题 我有一个长时间运行的导入作业,从ajax请求开始,可能需要几分钟才能完成请求。当第一个ajax请求运行时,我想查看一下服务器,以了解导入完成了多远,第二个请求将每隔2秒左右完成一次 当我使用Ext.Ajax方法时,请求似乎是链接的——第一个Ajax请求(导入)一直运行到完成,然后第二个(导入更新)被触发 我看到Ext.Ajax是单例的,所以也许这就是原因。因此,我尝试使用Ext.create('Ext.data.Connection')创建自己的连接对象,但不起作用 我的当前请求链是:
Ext.Ajax
方法时,请求似乎是链接的——第一个Ajax请求(导入)一直运行到完成,然后第二个(导入更新)被触发
我看到Ext.Ajax是单例的,所以也许这就是原因。因此,我尝试使用Ext.create('Ext.data.Connection')
创建自己的连接对象,但不起作用
我的当前请求链是:
- 第一个请求-启动
- 第一个请求-结束
- 第二个请求-启动
- 第二个请求-结束
- 第一个请求-启动
- 第二个请求-启动
- 第二个请求-结束
- …也许更多的第二次请求
- 第一个请求-结束
更新2011-10-16 回答 问题不是ExtJS-抱歉!这是PHP,我的第一个脚本与会话一起工作,第二个脚本也尝试访问会话。由于PHP会话是基于文件的,会话文件从第一个请求脚本锁定,第二个请求脚本必须等到第一次释放会话锁 我通过在每个x行之后添加到导入过程(第一个脚本)的这段代码解决了这个问题:
$id = session_id();
session_write_close();
sleep(1);
session_start($id);
因此,它停止并重新加载会话,而另一个脚本能够连接并获取会话信息。单例或非单例甚至不会改变
Ext.Ajax
的工作方式。我认为这可能是由于编码(您是否等待通话结束?)
顺便说一句,我以前打多个电话从来没有遇到过这个问题。唯一占用调用的是服务器(PHP),它不支持并行处理并导致延迟,并生成这样的模式
- 呼叫1-启动
- 呼叫2-启动
- 调用1在服务器中处理,调用2排队
- 呼叫1-完成
- 在服务器中处理调用2
- 呼叫2-完成
我写这封信只是为了让你感受一下它是如何工作的。看看:)花了我半个小时哈哈 编辑:添加了一个漂亮的小图表:)哇!谢谢你,伙计!太棒了,太棒了!你是对的——这是服务器端,我遇到了一个PHP问题(会话锁定),我没有看到,我会用答案更新我的问题。顺便说一句,我不知道JSFIDLE这个很酷的东西,从现在起我将使用它!欢迎把它摊成一堆。这让程序员更容易分享问题和答案。谢谢。只是有一些额外的时间来做一些小的编码:)你传播了JSFIDLE,我已经用它:)+1作为信息。永远不知道会话锁的东西:)这太棒了。我有完全相同的问题,我没有意识到这是会话锁把事情搞砸了。