#php #comet #long-polling #execution-time
#php #comet #длительный опрос #время выполнения
Вопрос:
Я пытаюсь создать систему уведомлений в полуреальном режиме, подобную Facebook, и для этого я с нетерпением жду возможности использовать длительный опрос вместо бессмысленного опроса (опрос каждые N секунд).
Да, я не использую Apache, я на Nginx, который может обрабатывать этот тип опроса.
Теперь возник вопрос, во всех руководствах, которые я прочитал по этому вопросу длительного опроса, показаны примеры, когда время ожидания запроса ajax составляет 30-50 секунд, если данные не возвращаются, а затем опрос снова, для меня это не имело смысла, потому что раньше я опрашивал сервер каждые 30 секунд, чтобы проверить наличие уведомлений, как длительный опрос улучшает ситуацию? он по-прежнему будет повторно подключаться каждые 30-50 секунд.
По этой причине я подумал, что может быть вариантом изменить max_execution_time с 60 по умолчанию на 300 или 400, затем выполнить опрос с запросом, который ожидает не менее 5 минут, прежде чем истечь время ожидания и повторно подключиться.
Могу ли я ожидать каких-либо плохих побочных эффектов от этого? Является ли этот подход ошибочным? Или есть подход получше?
Спасибо.
Комментарии:
1. Не то, что вы просили, но это лучше, потому что длительный опрос возвращается, как только появляются новые данные в течение этих 30-50 секунд. Обычный опрос должен подождать до следующего интервала.
2. Вы правы, возможно, это небольшое улучшение, но все же основная цель длительного опроса — сократить HTTP-вызовы, если я не ошибаюсь.
3. Нет, это не является его основной целью, его целью является очень низкая задержка. В большинстве случаев длительный опрос приводит к большему количеству вызовов. Т.е., если ваши значения обновляются 3 или 4 раза за 30 секунд, у вас будет 4 или 5 вызовов, выполненных с длительным опросом, где при вашем обычном опросе будет выполнен только 1.
4. Спасибо за разъяснение =) Я впервые занимаюсь comet, так что я вроде как перепутал понятия.
Ответ №1:
Лучшим подходом было бы использовать серверную часть, оптимизированную для подобных задач, например node.js
.
Однако, если вы хотите использовать PHP, нет причин против увеличения максимального времени выполнения.
Комментарии:
1. Хм, спасибо за ответ, я думаю, я продолжу, есть ли какие-либо возможности утечки памяти?
2. было бы нормально сделать его 1 часом? было бы рискованно?