2012-02-21 5 views
2

Я делаю некоторые исследования наилучшего способа показать счетчик пользователей онлайн, который обновляется до второго, пытаясь избежать непрерывного опроса ajax.WebSockets на общедоступном хостинге PHP

Очевидно, что WebSockets представляется лучшим вариантом. Поскольку это интрасеть, я сделаю это требование использовать Chrome или Safari, поэтому не должно быть проблем с совместимостью.

Я читал некоторые статьи о WebSockets, так как я новичок в этом, и я думаю, что я в значительной степени понимаю, как это работает.

Я не уверен, как реализовать его с помощью PHP. Node.js кажется естественным выбором для этого из-за того, что он «всегда работает», но это не вариант.

Почему меня больше всего смущает тот факт, что PHP работает, и когда это делается, оно заканчивается. Если PHP закончится, не потеряется ли соединение сокета? Или, если php повторно запускает, он будет оглядываться на пользователя по ip? (Я не вижу, что скорее всего)

Тогда я нашел эту библиотеку http://code.google.com/p/phpwebsocket/ , но это, кажется, немного старый (он упоминает только Chrome еженощно совместим с WebSockets)

В одной точке говорит: «Из в командной строке, запустите программу server.php, чтобы прослушивать подключения сокетов ». что означает, что мне нужен SSH, чего нет у многих общих планов хостинга.

И другие мои сомнения это другая линия в источнике этой библиотеки:

set_time_limit(0); 

означает ли это, что файл PHP будет работать непрерывно? Разрешено ли это на совместном хостинге? Из того, что я знаю, все хостинги убивают php после таймаута 1 o2 минуты.

У меня есть таблица mysql с онлайн-пользователями, и я хочу использовать PHP для трансляции через websocket количество зарегистрированных пользователей для этих онлайн-пользователей. Может кто-нибудь, пожалуйста, помогите мне или укажите мне где-нибудь лучшую информацию о том, как это можно достичь?

Благодаря

+0

веб-сокеты являются популярными, но события, отправленные сервером, могут быть лучше подходят для вашей цели, если вы можете заставить его работать. SSE, по-видимому, можно поддерживать в старых браузерах с JS, тогда как веб-сокетов нет, плюс вам не требуется двусторонняя связь. Я пытаюсь работать через PHP SSE проблемы здесь: http: // stackoverflow.com/questions/9070995/html5-server-sent-events-prototyping-ambiguous-error-and-repeat-poll – tomfumb

+0

У меня нет проблем с совместимостью, потому что я могу управлять используемым браузером, и меня интересовали WebSockets, я видел, как он работает на trello.com, и он работает как шарм. – Juan

+3

Мое предположение, что вы не пытаетесь использовать PHP для приложений с поддержкой состояния, поскольку PHP был разработан для таких целей в первую очередь. Также, как вы отметили, общий хостинг может помешать открытию произвольных сокетов. Лучше всего получить свой собственный сервер VPS http://www.lowendbox.com/ –

ответ

2

WebSockets потребовало бы много вещей даже на выделенный хостинг, отложить в сторону хостингом.

Для вашего требования сервер отправил события (sse) правильный выбор, так как только сервер будет толкать данные клиенту.

SSE может просто вызвать скрипт сервера, очень похож на AJAX, но на стороне клиента будет получать и иметь возможность обрабатывать часть данных по частям, как это происходит в. Dom событие будет генерироваться каждый раз, когда некоторые данные поступают в системе.

Но IE не поддерживает SSE даже в версии 10. Итак, для IE вам нужно использовать некоторую технику резервного копирования, например «foreever iframe».

Что касается хостинга, обычные общедоступные хостинги (и те, которые не очень дешевы) позволят скриптам php работать долго, если они не рассматриваются как проблемы.

Смежные вопросы