AJAX - не ждет длинного ответа и выдает "что есть"

12
Segey
На сайте с 23.08.2005
Offline
404
2178

Есть AJAX запрос, кажется все просто. Но в теле скрипта, который исполняется по AJAX запросу содержится функция file_get_contents. Сам ответ при ее запуске получить тоже достаточно долго. Заменил на CURL и понял наконец, что оказывается исполнения file_get_contents и CURL скрипт который запускается по AJAX запросу - просто не ждет....

Ну то есть проблема в том, что не хочет такого длительного ожидания AJAX скрипт и вдруг мне возвращает пустой CURL, при этом я сижу после и смотрю как спрабатывает скрипт просто по FTP вижу как он раскладывает файлы. А у меня уже минут 2-3 как на руках пустой результат, с якобы не успешным завершением... Что делать, как заставить его подождать все эти 3-5 минут?

Вроде помню писал ранее, даже с загрузкой в %, хотя все равно все они более чем 20 секунд не исполнялись. А тут вот такая ситуация, нужно еще с сервера ответа дождаться и иногда очень длительного в принципе....

Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
S
На сайте с 30.09.2016
Offline
469
#1

Ваш скрипт прерывается через 30 секунд, так штоле? Тогда увеличьте максимально допустимое время работы скрипта - либо в настройках PHP, либо непосредственно в скрипте.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Segey
На сайте с 23.08.2005
Offline
404
#2

Sitealert, Да нет, AJAX скрипт который еще не выполнен до конца прекращает ожидать и выдает мне полупустой ответ, как будто бы все готово ... AJAX не ждет выполнения CURL, при том что он там двойной.

AJAX -> вызов скрипта с CURL -> Этот скрипты вызывает еще один CURL

Полного выполнения последнего CURL - нет полного ожидания.

S
На сайте с 30.09.2016
Offline
469
#3

Значит, Вы так скрипт написали, что он выдаёт ответ раньше времени.

infant
На сайте с 15.03.2008
Offline
170
#4
Segey:
[Да нет, AJAX скрипт который еще не выполнен до конца прекращает ожидать и выдает мне полупустой ответ, как будто бы все готово

Думаю не совсем так. Скорее всего PHP прекращает ждать и отдает пустой результат. Где можно посмотреть пациента, что бы мог сказать более точно?

Segey
На сайте с 23.08.2005
Offline
404
#5

infant, Да нигде - это сама себе панелька, чтобы проще было что-то делать... Не понял, а чего он ждет сам php? Он как раз выполняет скрипт как нужно - целиком.

R
На сайте с 20.02.2015
Offline
59
#6

Браузер после длительного ожидания сбрасывает соединение, не могу назвать точную цифру но вроде 30 сек.

Segey:
А у меня уже минут 2-3 как на руках пустой результат, с якобы не успешным завершением...

Вообще за это время ожидания он должен был уже выбросить исключение с ошибкой "timeout".

Нужен некий механизм создания задачи и ожидания ее завершения. Через асинхронные запросы создаем задачу и далее в цикле проверяем ее статус завершения/ошибки далее вывод результата.

Segey
На сайте с 23.08.2005
Offline
404
#7
rereg:
Вообще за это время ожидания он должен был уже выбросить исключение с ошибкой "timeout".

Так вот в php этого нету, там set_time_limit стоит. Проблема в том, что на момент ответа для AJAX - последний CURL пустой. То есть на самом деле он сработал, но в ответе который получил AJAX - его нет, а ответ уже есть. И не с ошибкой, а просто как готовый и якобы нормальный ответ...

infant
На сайте с 15.03.2008
Offline
170
#8

AJAX может ждать очень долго, без пациента что либо сказать сложно.

Проверить что возвращает сервер (PHP) просто, нажимаем F12 и смотрим ответ во вкладке запросов.

Если JS начал выполнятся до ответа AJAX запроса, это можно увидеть.

S
На сайте с 30.09.2016
Offline
469
#9
rereg:
Браузер после длительного ожидания сбрасывает соединение

Но в этом случае всё выглядит именно как ошибка, а не как нормальный ответ.

Segey
На сайте с 23.08.2005
Offline
404
#10

infant, вот ответ сервера, кажется это вообще он...

Date
"Fri, 25 Aug 2017 12:02:35 GMT"
Server
"Apache/2.4.10 (Debian)"
Vary
"Accept-Encoding"
Content-Encoding
"gzip"
Content-Length
"90"
Keep-Alive
"timeout=5, max=97"
Connection
"Keep-Alive"
Content-Type
"text/html; charset=utf-8"
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий