gpt4 book ai didi

apache - jQuery Ajax 中止和快速连续的新请求

转载 作者:行者123 更新时间:2023-12-03 22:41:18 25 4
gpt4 key购买 nike

我有一个移动应用程序,它可以实现

JqXHR = $.ajax({
url: 'url',
data: null,
async: true,
cache: false,
dataType: 'json',
type: 'GET',
crossDomain: true,
timeout: 63000,
success: function(data, textStatus, jqXHR) {},
error: function(jqXHR, textStatus, errorThrown) {}
});

请求。它等待 63 秒(PHP 后端可以运行约 62 秒)以进行另一端的用户交互。现在,如果同时我决定中止此请求,那么我会调用 JqXHR.abort()。在错误处理程序中,我已经处理/区分了真正的错误和中止,这是有效的。中止后,我想立即向服务器发送另一个 API 调用以解决 Unresolved 问题并确保记录我的取消请求。

问题来了。即使我 abort() 第一个请求,PHP 脚本仍然在服务器上运行,如果它也执行第二个请求,这不会成为问题,这将使其停止并终止()。但这并没有发生。在第一个请求完成之前,第二个请求不会发生。

有什么想法吗?

jQuery 1.8.2、jQuery Mobile 1.2.0、PhoneGap 2.0.0 和 2.1.0、Apache 2、Linux、PHP 5.3

最佳答案

一些信息:并行 Ajax 与 Apache session 锁定

<小时/>

session 数据通常在脚本终止之后存储,但 session 数据被锁定以防止并发写入 任何时候一个 session 只能运行一个脚本

当例如将框架集与 session 一起使用,由于这种锁定,您将体验到框架一一加载。 您可以通过尽快结束 session 来减少加载所有帧所需的时间

<小时/>

因此您可以在 ajax 脚本中使用 session session_start();(可能自动处理)紧接着(尽快)session_write_close();

session_write_close(); 将“结束”当前 session 并存储 session 数据。

但是: session_id() 仍会提供正确的(当前)PHPSESSID,因此您只需执行 即可重新获得对当前 session 的写访问权限>session_start() 可以在您需要的任何时候再次调用。

<小时/>

我在所有 ajax 脚本中都以这种方式使用它来实现 session 处理允许并行请求

关于apache - jQuery Ajax 中止和快速连续的新请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12859946/

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