Плохо ли изменять max_execution_time в PHP на что-то вроде 5 минут, чтобы выполнять push-запросы на длительный опрос (comet)?

#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 часом? было бы рискованно?