@bismark1

Как отправить ответ ajax`y досрочно?

Простой пример кода php скрипта:
<?$a=3;echo$a;while(true){}?>
К этом скрипту идёт ajax запрос и естественно из-за бесконечного цикла ответ так и не приходит. Нужно как то отправить ответ ajax`у до того как начнётся бесконечный цикл.
  • Вопрос задан
  • 536 просмотров
Пригласить эксперта
Ответы на вопрос 5
profesor08
@profesor08 Куратор тега PHP
Когда возникают такие вопросы, значит с постановкой задачи что-то не так. Это как пытаться прибить лампочку вбивая в нее молоток гвоздем. Запусти запрос на создание сокет сервера, вторым запросом получи его состояние.
Ответ написан
Комментировать
@marsdenden
Отделите мух от котлет. Обработка запроса и запуск сокет-службы - несколько разные вещи. По сути вы пытаетесь в одном скрипте соединить два. Вынесите код сокет-службы в отдельный скрипт и запускайте его из скрипта запроса. Или изучите php fork, но там есть подводные камни с соединениями с базой
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
php.net/manual/en/function.flush.php

<?php
echo "вот вам ответ!";
flush(); // отправляет все что есть прямо сейчас
// запускаем что-то тяжелое
while(true) {
  // если отпадет по таймауту
}
echo "это сообщение никто не увидит";
Ответ написан
@LemonFox
stateless mind
PHP не является асинхронным по умолчанию.
На http запрос в любом случае по спецификации должен последовать ответ. Вы можете воспользоваться task-manager, чтобы облегчить ваш http-запрос.
В любом случае если у вас в в ответе на http-запрос должен быть бесконечный цикл (демонизация ИТП) то значит у вас где-то проблемы с (бизнес)-логикой
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
https://learn.javascript.ru/server-sent-events
Но оно не применимо для ie/edge.
https://caniuse.com/#search=Server-sent%20events

Поэтому вам остается переделать на websocket или long polling
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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