当我使用JQuery一起发送两个ajax请求时,响应一起出现
$.ajax ({ type: "POST", url: 'ajax.php' }); $.ajax ({ type: "POST", url: 'ajax2.php' });
ajax.php,ajax2.php是两个文件,其中包含一个虚拟的for循环大约需要5秒钟。
POST本地主机/ajax.php 200 OK 4.77s POST本地主机/ajax.php 200 OK 4.37s
在这里,每个请求大约需要5秒钟才能执行…
当我在symfony做相同的例子时,我得到了不同的结果
$.ajax ({ type: "POST", url: 'module/action1' }); $.ajax ({ type: "POST", url: 'module/action2' });
action1,action2是两个动作,仅包含一个虚拟的for循环大约需要5秒钟。
POST本地主机/web/frontend_dev.php/module/action1 200 OK 4.47s
POST本地主机/web/frontend_dev.php/module/action2 200 OK 9.87s
请注意, 第二个请求在第一个请求完成后执行,我不知道为什么会这样
当有请求进入并尝试启动会话时,php将检查当时是否正在使用同一会话。如果是这样,则新请求必须等到另一个请求完成或释放会话锁。
您的情况如下:
默认情况下,symfony在每个请求的开始处启动会话。
在纯PHP中,您可以使用释放会话文件的锁session_write_close()。Symfony具有sfUser类,该类包装了会话功能,您需要调用它的shutdown()方法。
session_write_close()
shutdown()
请注意,如果稍后在该请求中修改任何会话数据,则将不会保存该数据。
有关更详细的说明,请阅读PHP Session编写锁定以及如何在symfony中处理锁定。