аякс запрос на сниппет
всем привет.
прошу совета — кидаю аякс запрос на сниппет (передаю параметры), в нём пачка запросов к другому сайту. при большом количестве запросов / большом количестве обрабатываемой инфы браузер обрезает по таймауту (1 минута).
что с этим можно сделать? листинг пока не прикладываю — сликом много строк…
из вариантов — выводить построчно результаты каждого запроса к стороннему сайту, но тогда не понимаю как правильно прописать аякс на сниппет…
прошу совета — кидаю аякс запрос на сниппет (передаю параметры), в нём пачка запросов к другому сайту. при большом количестве запросов / большом количестве обрабатываемой инфы браузер обрезает по таймауту (1 минута).
что с этим можно сделать? листинг пока не прикладываю — сликом много строк…
из вариантов — выводить построчно результаты каждого запроса к стороннему сайту, но тогда не понимаю как правильно прописать аякс на сниппет…
Комментарии: 6
Не понимаю.
Вы создаете на JS запрос к скрипту на php
Передаете в php какие-то параметры, которые будут доступны либо в $_GET либо в $_POST в зависимости от выбранного метода ajax запроса.
Если ваш php скрипт не успевает на сервере обработать информацию за 60 секунд, настраивайте файл php.ini и в нем задавайте большее время для работы скрипта.
Вы создаете на JS запрос к скрипту на php
Передаете в php какие-то параметры, которые будут доступны либо в $_GET либо в $_POST в зависимости от выбранного метода ajax запроса.
в нём пачка запросов к другому сайтуВ чем — в нем? в php скрипте? Что значит запросов к другому сайту? Через curl?
браузер обрезает по таймауту (1 минута).браузер не может ничего обрезать. Сервер имеет время на выполнение скрипта и если за это время не получен ответ, то выдается ошибка 50*
Если ваш php скрипт не успевает на сервере обработать информацию за 60 секунд, настраивайте файл php.ini и в нем задавайте большее время для работы скрипта.
Вы создаете на JS запрос к скрипту на phpСделал форму которая посылает запрос сниппету. Делал по этой статье
В чем — в нем? в php скрипте? Что значит запросов к другому сайту? Через curl?Да, запрашиваю данные по API
Если ваш php скрипт не успевает на сервере обработать информацию за 60 секунд, настраивайте файл php.ini и в нем задавайте большее время для работы скрипта.уже настраивал, похоже проблема была в настройках nginx.
основной вопрос как принципиально изменить сниппет чтобы не приходилось настолько изменять настройки сервера…
Выход один — не пытаться получать данные от скрипта, который не успевает их отдать в течении 1-10 секунд. О таймауте вообще речи не идёт — никто не будет ждать 30 секунд (бывают исключения, но это именно исключения).
Там, где требуются большие затраты времени на получение данных, скрипты нужно запускать в фоне (например cron по расписанию) и кэшировать у себя в базе данных или иным способом. Вот их потом и отдавать по ajax пользователям.
Я 2 варианта использую:
— сбор данных по cron и кэширование у себя
— если нужно отправить несколько запросов к сторонним серверам, то нужно это делать не одним ajax-запросом, а отдельными с таймаутом. По истечении таймаута каждого ajax-запроса что-то сообщать пользователю. Так или часть данных будет получена или хотя бы пользователь видеть какой-то результат запроса.
Там, где требуются большие затраты времени на получение данных, скрипты нужно запускать в фоне (например cron по расписанию) и кэшировать у себя в базе данных или иным способом. Вот их потом и отдавать по ajax пользователям.
Я 2 варианта использую:
— сбор данных по cron и кэширование у себя
— если нужно отправить несколько запросов к сторонним серверам, то нужно это делать не одним ajax-запросом, а отдельными с таймаутом. По истечении таймаута каждого ajax-запроса что-то сообщать пользователю. Так или часть данных будет получена или хотя бы пользователь видеть какой-то результат запроса.
Ещё есть вариант: форма отправляет запрос на сервер, сниппет регистрирует задачу и затем выполняет её в фоне, пользователю отправляется результат (хоть на почту).
интересный вариант, подумаю на будущее.
Это тоже может пригодиться: modx.cc/documentation/additions/cronmanager/
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.