@new2k19

Можно ли так сделать на js и php?

Есть скрипт php, который выполняется очень долго.
Если я отправлю ему post запрос через js, смогу ли я отправлять запросы с него и получать их на предыдущий скрипт, чтобы вывести на страницу? Что-то типо общения.
  • Вопрос задан
  • 2041 просмотр
Пригласить эксперта
Ответы на вопрос 4
nuclear_kote
@nuclear_kote
если переход на другую страницу случился то тот запрос уже не ответит. Можно сделать доп метод который будет возвращать результат и дергать его раз в секунду например, ну или вебсокеты. Вообще обычно кидается в очередь и асинхронно обрабатывается например другим сервисом, потом в другую очередь ответы кидаются или пишется в базу результат. + впринципе долгий запрос может по таймауту клиента отвалиться, он выполнится, но результат потеряется
Ответ написан
cyber-jet
@cyber-jet
Самое простое, результат выполнения php скрипта сохранять в базе. При помощи js запрашивать результат, с определенной периодичностью, например, раз в минуту.
Ответ написан
Комментировать
@Vlad_Murashchenko
Да, можно, это называется COMET почитайте об этом на learnjs.ru там подробно расписаны разные реализации
Ответ написан
Комментировать
@valenti-dev
Если я вас правильно понял, этот механизм называется Long Pool
если кратко: с js на php отправляете запрос, на стороне php скрипта задерживаете ответ до возникновения события, данные которого нужно отправить обратно (то есть прислать js-скрипту ответ) с помощью цикла
$event_data = false;
do {
//условно проверяем/получаем нужные данные
$event_data = get_event();
sleep(1);//устанавливаем перерыв между итерациями в 1 секунду, что-бы не нагружать сильно сервер
} while(!$event_data);
echo $event_data;
die();

как только js-сторона получает ответ - рекурсивно отправляет новый ajax-запрос, что-бы получать новые события,
а полученные данные обрабатываются так как вам нужно на стороне клиента
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы