Надеюсь, я могу объяснить это достаточно хорошо. Я работаю над созданием PHP library to handle ajax requests through PHP объектно-ориентированным способом. В настоящее время я размышляю над хорошим способом реализации долгого опроса, но мне интересно что-то.Длинный опрос с PHP на Apache
Apache не справляется с тем, что несколько соединений открыты очень хорошо. Модель потока за запрос делает Apache крайне неэффективным для длительного опроса. Использование таких серверов, как nginx и lighttpd, обрабатывает эти потоки намного лучше, поэтому в библиотеке я планирую реализовать различные функции, оптимизированные для конкретных серверов, доступных из одного вызова функции. В случае Apache, который, как оказалось, обладает огромной долей рынка для приложений PHP, мне нужно лучшее решение.
Есть ли способ разместить входящий запрос на удержание/паузу и продолжить обработку других запросов, пока я не буду готов повторно активировать его?
Я не уверен, что это имеет смысл или я даже на правильном пути. Какое возможное решение, которое рекомендует SO для длительного опроса в PHP на сервере Apache?
Почему вы приостановили обработку на сервере? не заставит ли ваш пользователь ждать много? – Joseph
С Apache он использует модель потока за запрос, поэтому первоначальный запрос страницы в приложении использует поток, а затем запрос ajax (называемый после загрузки DOM) будет использовать отдельный поток. Проблема в попытке большого объема трафика вызовет тысячи потоков и в конечном итоге отключит сервер. –
У нас была аналогичная проблема, после включения длинной страницы загрузки ajax/PHP, запущенной в случайном порядке (cca каждые 4-5 загрузки), занимающей слишком много времени ... пока и только для уведомлений я решил это НЕ sleep() в PHP в любом случае, и переместил функцию timewait на javascript, так что теперь javascript запрашивает новое выполнение PHP каждый, например, 10s, но теперь загрузка страниц выглядит нормально. –