2012-06-17 2 views
0

Мой сайт почти закончен, но у меня проблема. Каждые 10-> 15 секунд мой сайт будет искать базу данных, чтобы проверить, есть ли обновления или нет. Если есть обновления, отправьте уведомление пользователю, которое в сети. Я искал google и нашел два решения: Comet и AJAX. Что лучше в моем случае. или есть лучшее решение?Что лучше Comet или AJAX в течение 10-> 15-секундного опроса?

+0

Я бы предположил, что ваши варианты: 1) Опрос AJAX 2) Самостоятельное решение в реальном времени (Comet/WebSockets) (но это зависит от вашего хостинга 3) Отключение загрузки к размещенному сервису реального времени (Comet/WebSockets). Какое у вас решение для хостинга? Полный доступ к корневому сайту? Или общий хостинг? Поскольку вы используете PHP и Apache, вполне вероятно, что самостоящее решение в реальном времени не будет возможным из-за необходимости поддерживать много постоянных соединений. Если вы можете уточнить, я предложу решение. – leggetter

+1

Я мало знаю о веб-хостинге, но это своего рода общий хостинг, они называют его бизнес-хостингом. Мой сайт использует php и jquery, поэтому я думаю, что комета и ajax вполне подходят для меня, но я читаю огромные комментарии, которые они сказали, что комета с php не является хорошим выбором, вам нужно использовать socket.io или node.js. Согласны ли вы с ними и каково ваше мнение? – MQuy

ответ

0

На мой взгляд, лучшим решением для веб-сайта, который находится на общедоступном хостинге, и использует Apache и PHP, является использование realtime hosted service для обновления обновлений подключенным клиентам.

Вот почему:

Apache не был построен, чтобы справиться с долго выполняющихся постоянные соединения, так что это не отличный выбор для Comet или WebSocket решений. Решения PHP Comet и WebSocket, которые вы найдете, скорее всего, будут выполняться автономно как процесс демона, а не Apache. На совместном хостинге крайне маловероятно, что вы сможете запустить процесс демона, и ваш хостинг-провайдер также вряд ли будет доволен тем, что вы сохраняете много постоянных подключений открытым и запугивающим ресурсом на общей машине.

Если вы получили опрос AJAX и опросили ваш сайт каждые 10-15 секунд и включили запрос базы данных в этот опрос, то, если у вас есть разумное количество клиентов на вашем ресурсе, использование ресурсов может быстро скапливаться:

100 клиентов, 10-секундный опрос, 60 секундный период = 100 * 10 * 6 = 6000 запросов и запросов к базе данных в минуту. В большинстве случаев эти запросы также могут быть отходами, если обновление не произошло. Вы можете найти более крупный пример here.

Выгружая возможность мгновенно высылать обновления своим клиентам на веб-сайте, вы удаляете эти 6000 запросов и запросов к базе данных и заменяете их одним вызовом на хостинговую службу в реальном времени. Служба поддерживает постоянные подключения к клиентам, так что, когда ваше приложение подталкивает к ней обновление, оно может доставлять их подключенным клиентам.

Наконец, вы должны знать, что WebSockets заменяет Comet как предпочтительное решение для обмена в реальном времени. Протокол был создан для решения проблемы, которую решения кометы пытались решить с помощью различных хаков. Подробнее об истории этих технологий и WebSockets см. here.