gpt4 book ai didi

php - JQuery .ajax 超时增加不起作用

转载 作者:行者123 更新时间:2023-11-30 17:53:33 26 4
gpt4 key购买 nike

我有一个网页,其中 javascript 通过 .ajax() 函数使用 POST 请求调用 PHP 服务器。 PHP 服务器依次调用外部第三方 API 来提交文本分析作业。处理文本分析作业后,我的 PHP 服务器会从 API 查询结果。但是,第三方 REST API 不提供任何查询作业状态的方法。因此,在我提交作业后,我让我的程序休眠大约一分钟,然后查询结果。但是,有时我的结果不完整。我尝试将休眠时间设置得较长,但将其设置为超过一分钟似乎会使从 Javascript 到 PHP 的初始 POST 请求超时。将 ajax 超时参数设置为高无济于事。有人对如何解决这个问题有建议吗?非常感谢任何帮助。

ajax 请求如下所示:

function callServer(params, success) {
var url = "ie.php";
$.ajax({
type: 'POST',
url: url,
data: params,
timeout: 60000000, //time out parameter doesn't work
dataType: "json",
success: function(result, textStatus) {
console.log(JSON.stringify(result, null, ' '));
if (success) success(result);
},
error: function(xhr, textStatus, errorThrown) {
var text = 'Ajax Request Error: ' + 'XMLHTTPRequestObject status: ('+xhr.status + ', ' + xhr.statusText+'), ' +
'text status: ('+textStatus+'), error thrown: ('+errorThrown+')';
console.log('The AJAX request failed with the error: ' + text);
console.log(xhr.responseText);
console.log(xhr.getAllResponseHeaders());
}
});
}

错误看起来像这样:

AJAX 请求失败,错误:Ajax 请求错误:XMLHTTPRequestObject 状态:(0,错误),文本状态:(错误),抛出的错误:()

最佳答案

整个过程中有多个地方有超时设置:

  1. Browser / Ajax call
  2. PHP has its own: ini_set('max_execution_time', '1800'); or set_time_limit(1800);
  3. Apache itself has a max run time: Timeout apache2.conf
  4. Possibly your REST API - however you are calling it

我认为最好的情况是从阻塞/同步策略更改为异步策略:

  1. 使用ajax从客户端向你的服务器发送请求
  2. 从您的服务器异步运行 REST API(查找异步 curl 或 node.js)
  3. 客户端使用 ajax 定期查询您的服务器的状态(可能每 10 秒一次)

这使得整个过程是异步的,并且不需要您在处理发生时等待或阻塞

关于php - JQuery .ajax 超时增加不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18477874/

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