当前位置: 首页 > 面试题库 >

在symfony中同时发送两个ajax请求

司徒兴思
2023-03-14
问题内容

当我使用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将检查当时是否正在使用同一会话。如果是这样,则新请求必须等到另一个请求完成或释放会话锁。

您的情况如下:

  • 第一个请求到达,锁定会话
  • 第二个reauest到达,尝试锁定会话,必须等待
  • [5秒睡眠]
  • 第一个请求完成,释放锁
  • 第二个请求启动,实现会话锁定
  • [5秒睡眠]
  • 第二个请求完成

默认情况下,symfony在每个请求的开始处启动会话。

在纯PHP中,您可以使用释放会话文件的锁session_write_close()。Symfony具有sfUser类,该类包装了会话功能,您需要调用它的shutdown()方法。

请注意,如果稍后在该请求中修改任何会话数据,则将不会保存该数据。

有关更详细的说明,请阅读PHP
Session编写锁定以及如何在symfony中处理锁定



 类似资料:
  • 交互过程中,发送请求是第一步。那么,我们将如何构造一个请求呢? 这一章节,我们将一步一步来构建一个 Ajax 请求。学习本节,你将学会: 如何通过 XMLHttpRequest 和 ActiveXObject 来构造一个通用的 xhr 对象。 如何通过 xhr 对象来发送 GET、 POST 等请求。 Content-type 在 Ajax 数据发送中的作用。 那么,接下来让我们进入本节的学习吧。

  • 问题内容: 在我的React应用程序中,我有一个参数数组(例如一些ID),这些参数应该用作ajax调用队列的参数。问题是该数组可能包含1000多个项目,如果我仅使用forEach循环递归地进行ajax调用,则浏览器页面最终会在每个请求得到解决之前停止响应。 是否有一种技术/库可以允许以异步方式一次发送5个请求,例如,一次异步发送ajax请求,并且仅在这些请求完成后才继续下一个5? 后续问题: 反应

  • 如何使用dataTables实例化不加载数据的表(服务器模式),然后在单击按钮时加载数据。如果serverSide在初始化时设置为true,则表将自动发送ajax请求,然后呈现数据,这不是我想要的(

  • 本文向大家介绍django ajax发送post请求的两种方法,包括了django ajax发送post请求的两种方法的使用技巧和注意事项,需要的朋友参考一下 django ajax发送post请求的两种方法,具体内容如下所述: 第一种:将csrf_token放在from表单里    第二种:发送前添加头部信息 总结 以上所述是小编给大家介绍的django ajax发送post请求的两种方法,希望

  • 问题内容: 我同时运行两个AJAX请求时遇到问题。我有一个PHP脚本正在将数据导出到XSLX。此操作需要很多时间,因此我尝试向用户显示进度。我正在使用AJAX和数据库方法。实际上,我非常确定它曾经可以工作,但是我不知道为什么,它不再在任何浏览器中都能工作。新浏览器有什么变化吗? 在数据库中正确更新进度 JS计时器正在尝试获取进度,我可以在控制台中看到它,但是所有这些请求都加载第一个脚本的整个持续时

  • 问题内容: 基于:使用jQuery中止Ajax请求 …在stock_search()中-在发出ajax请求之前,如何在发出新请求之前检查当前的任何请求并中止()?还是…有更好的方法吗? 问题答案: 创建所有请求的数组队列。然后,如果找到需要中止所有现有请求的位置,则可以遍历数组并在所有未决请求上调用中止。应该很简单。 尽管另一种方法是只保留一个内部标志,该标志指示当前是否正在处理一个请求,如果有请