аякс запрос на сниппет

всем привет.
прошу совета — кидаю аякс запрос на сниппет (передаю параметры), в нём пачка запросов к другому сайту. при большом количестве запросов / большом количестве обрабатываемой инфы браузер обрезает по таймауту (1 минута).
что с этим можно сделать? листинг пока не прикладываю — сликом много строк…
из вариантов — выводить построчно результаты каждого запроса к стороннему сайту, но тогда не понимаю как правильно прописать аякс на сниппет…
Илья
24 апреля 2019, 17:44
modx.pro
114
0

Комментарии: 6

Александр Мельник
24 апреля 2019, 22:10
0
Не понимаю.
Вы создаете на JS запрос к скрипту на php
Передаете в php какие-то параметры, которые будут доступны либо в $_GET либо в $_POST в зависимости от выбранного метода ajax запроса.
в нём пачка запросов к другому сайту
В чем — в нем? в php скрипте? Что значит запросов к другому сайту? Через curl?
браузер обрезает по таймауту (1 минута).
браузер не может ничего обрезать. Сервер имеет время на выполнение скрипта и если за это время не получен ответ, то выдается ошибка 50*
Если ваш php скрипт не успевает на сервере обработать информацию за 60 секунд, настраивайте файл php.ini и в нем задавайте большее время для работы скрипта.
    Илья
    25 апреля 2019, 11:54
    0
    Вы создаете на JS запрос к скрипту на php
    Сделал форму которая посылает запрос сниппету. Делал по этой статье
    В чем — в нем? в php скрипте? Что значит запросов к другому сайту? Через curl?
    Да, запрашиваю данные по API
    Если ваш php скрипт не успевает на сервере обработать информацию за 60 секунд, настраивайте файл php.ini и в нем задавайте большее время для работы скрипта.
    уже настраивал, похоже проблема была в настройках nginx.

    основной вопрос как принципиально изменить сниппет чтобы не приходилось настолько изменять настройки сервера…
      Алексей Шумаев
      25 апреля 2019, 14:11
      0
      Выход один — не пытаться получать данные от скрипта, который не успевает их отдать в течении 1-10 секунд. О таймауте вообще речи не идёт — никто не будет ждать 30 секунд (бывают исключения, но это именно исключения).
      Там, где требуются большие затраты времени на получение данных, скрипты нужно запускать в фоне (например cron по расписанию) и кэшировать у себя в базе данных или иным способом. Вот их потом и отдавать по ajax пользователям.
      Я 2 варианта использую:
      — сбор данных по cron и кэширование у себя
      — если нужно отправить несколько запросов к сторонним серверам, то нужно это делать не одним ajax-запросом, а отдельными с таймаутом. По истечении таймаута каждого ajax-запроса что-то сообщать пользователю. Так или часть данных будет получена или хотя бы пользователь видеть какой-то результат запроса.
      Алексей Шумаев
      25 апреля 2019, 14:13
      0
      Ещё есть вариант: форма отправляет запрос на сервер, сниппет регистрирует задачу и затем выполняет её в фоне, пользователю отправляется результат (хоть на почту).
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
6