Задать вопрос
@bismark1

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

Простой пример кода php скрипта:
<?$a=3;echo$a;while(true){}?>
К этом скрипту идёт ajax запрос и естественно из-за бесконечного цикла ответ так и не приходит. Нужно как то отправить ответ ajax`у до того как начнётся бесконечный цикл.
  • Вопрос задан
  • 538 просмотров
Подписаться 3 Средний 4 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽