Простой пример кода php скрипта:
<?$a=3;echo$a;while(true){}?>
К этом скрипту идёт ajax запрос и естественно из-за бесконечного цикла ответ так и не приходит. Нужно как то отправить ответ ajax`у до того как начнётся бесконечный цикл.
Когда возникают такие вопросы, значит с постановкой задачи что-то не так. Это как пытаться прибить лампочку вбивая в нее молоток гвоздем. Запусти запрос на создание сокет сервера, вторым запросом получи его состояние.
Отделите мух от котлет. Обработка запроса и запуск сокет-службы - несколько разные вещи. По сути вы пытаетесь в одном скрипте соединить два. Вынесите код сокет-службы в отдельный скрипт и запускайте его из скрипта запроса. Или изучите php fork, но там есть подводные камни с соединениями с базой
<?php
echo "вот вам ответ!";
flush(); // отправляет все что есть прямо сейчас
// запускаем что-то тяжелое
while(true) {
// если отпадет по таймауту
}
echo "это сообщение никто не увидит";
Ну это мне ничего не даёт. Если ждать таймаута весь смысл теряется.
Поясню для чего это нужно. Ajax запрос должен запустить сокет сервер и когда дойдёт до приёма новых подключений, нужно прервать ajax соединение и подключится через сокет.
PHP не является асинхронным по умолчанию.
На http запрос в любом случае по спецификации должен последовать ответ. Вы можете воспользоваться task-manager, чтобы облегчить ваш http-запрос.
В любом случае если у вас в в ответе на http-запрос должен быть бесконечный цикл (демонизация ИТП) то значит у вас где-то проблемы с (бизнес)-логикой
Посылая ajax-запрос я запускаю сокет-сервер когда всё готово мне нужно отправить ответ клиенту чтоб он запустил соединение через сокет. Если у меня действительно проблемы с логикой, предложите альтернативу.