Я создаю компонент веб-страницы, который требует относительно постоянного опроса базы данных. Я могу видеть два разных подхода к этому, и мне интересно, один из них лучше других, или если у меня отсутствует третий вариант.
1) Отправляйте запрос AJAX каждые 1 или 2 секунды, чтобы проверить наличие обновлений. Каждый запрос немедленно возвращает, есть ли новые данные.
2) Отключите один запрос AJAX, который не будет возвращаться до тех пор, пока он не получит данные или не произойдет тайм-аут. По любому из тех, что происходит, он запускает следующий запрос. (Я думаю, это называется длинным опросом?)
Количество запросов к базе данных будет одинаковым с любым из них, но с # 2 будет меньше запросов, запускаемых из браузера, которые могут сэкономить пропускную способность и ресурсы клиентов. Для сервера лучше ли иметь один PHP-запрос, который остается активным и спящий между запросами или который срабатывает каждые несколько секунд, обследует БД, а затем выключается? Или нет никакой разницы, и я подчеркиваю это слишком много?
EDIT: Я полагаю, я должен также указать, что это чат-виджет большого веб-приложения. Небольшая задержка в связи не собирается убивать пользователя, так как чат является вторичной функцией.
Длительный опрос будет лучше масштабироваться (т. Е. Меньше нагрузки на сервер), чем опрос, обеспечивая при этом гораздо лучшее время отклика.
Если ваши опросы получателей, среднее время поездки сообщения будет половину вашего интервала опроса.
При длительном опросе, его мгновение – сервер только ждет, если нечего сказать.
Если вы делаете чат-обмен сообщениями, продолжайте опрос; его юзабилити.
Нижняя сторона с длинным опросом – это сложнее реализовать; но это не намного сложнее и широко применяется. Поэтому, если вы не можете использовать готовые рамки для своего веб-сервера по выбору, вы можете приступить к написанию одного достаточно, и вы получите его работу.
Вы также можете посмотреть веб-узлы , часть новейших браузеров (или эмулировать с помощью Flash-файла, который вы набрасываете на свою страницу)