[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ajax, время ожидания, 504 (Gateway Time-out)
error418
Длительность выполнения кода на странице trmA1_ajax.php примерно чуть больше двух минут.
Запрос на сервер:

let dt = $('#updDt').val();

$("body").css("cursor", "progress");

$.ajax({
url: "./terminals/a1/trmA1_ajax.php",
type: "GET",
data: {"do": "updPay", "dt": dt},
cache: false,
timeout: 240000,
success: function(response){

$("body").css("cursor", "default");

if (response == 1) alert ('Данные успешно обновлены!');
else alert (response);


},
error: function(jqXHR, status, e) {
if (status === "timeout") {
console.log("Время ожидания ответа истекло!");
} else {
//console.log(jqXHR); // Другая ошибка
console.log(status);
console.log(e);
}
}

});


Через 90 секунд в логе ошибка: 504 (Gateway Time-out). Но сам сервер успешно завершает выполнение кода страницы trmA1_ajax.php.
Подскажите, кто знает, почему ajax не дожидается ответа? Где можно изменить эти 90 секунд?
На другом cервере это все работает успешно, ответ дожидается.
Kusss
Что может делать скрипт более 2 минут, не пробовали оптимизировать ?

Я бы отправил запрос без ответа на добавление .
А следующими запросами проверял бы выполнение задания

Скрипт же выполняет действие и заносит что-то. Пусть скрипт заносит промежуточные данные выполнения , допустим:
NULL - нет задания( значение по умолчанию )
1 - успешно выполненно
0 - начало выполнения

	/* Отправляем запрос без ожидания ответа */
$.ajax({
url: "./terminals/a1/trmA1_ajax.php",
type: "GET",
data: {"do": "updPay", "dt": dt}
}
);

var timer,
s = 0;

/**
* Ожидание ответа
*
* trmA1_result(3, 200);
* Не обязательные параметры. Сколько секунд ждать ответа
*
*/

trmA1_result();


function trmA1_result(s_min = 3, s_max = 200){
clearTimeout(timer);

s++;
timer = setTimeout(function(){

// тут запрос
$.ajax({
url: "./terminals/a1/trmA1_ajax_result.php",
type: "GET",
data: {"dt": dt}
success: function(response){
switch(response) {

case "1":
clearTimeout(timer);
alert ('Данные успешно обновлены!');
break;

case "0":
console.log('Обработка... ' + s);
break;

case default:
if (s > s_min) {
clearTimeout(timer);
alert ('Ошибка обработчика');
}
}


if (s > s_max){
clearTimeout(timer);
alert ('Превышен интервал ожидания');
}

}
,
error: function() {
console.log('Что-то пошло не так');
}
}
);

}, 1000);
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.