WebSockets на виртуальном хостинге PHP - PullRequest
2 голосов
/ 21 февраля 2012

Я проводил некоторые исследования наилучшего способа отображения счетчика «пользователи в сети», который обновляется до второй попытки избежать непрерывного опроса ajax.

Очевидно, что 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 количество зарегистрированных пользователей этим онлайн-пользователям. Может ли кто-нибудь помочь мне или указать куда-нибудь более подробную информацию о том, как этого можно достичь?

Спасибо

1 Ответ

2 голосов
/ 08 марта 2013

Websockets потребует много вещей даже на выделенном хостинге, за исключением общего хостинга.

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

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

Но IE не поддерживает SSE даже в версии 10. Так что для IE вы должны использовать какую-то альтернативную технику, например "foreever iframe".

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

...