HTML5 - WebSocket в виртуальном хостинге - PullRequest
6 голосов
/ 21 января 2012

Раньше у меня было небольшое приложение для чата (которое почти работало), использующее PHP, jQuery и MySQL. Объем пользователей очень маленький (его используют только мои друзья). Я использовал для этого длинный метод опроса.

А теперь я подумываю об использовании веб-сокетов HTML5, потому что это намного эффективнее. А также большинство моих друзей используют Google Chrome (который уже поддерживает HTML5). Я прошел некоторые уроки, которые говорят о веб-сокетах HTML5. И я скачал phpWebSocket с github. Я прошел через код. Но в файле readme говорится, что страница PHP, которая прослушивает входящие соединения, должна запускаться с использованием «PHP -q» из командной строки. Итак, я искал, что будет делать этот флаг "q". И я обнаружил, что он запускает страницу в тихом режиме. Итак, когда я запускаю это в тихом режиме, что происходит? Это будет работать бесконечно? Повлияет ли этот запущенный процесс на системные ресурсы?

Эта страница PHP должна работать все время. Тогда только соединения могут быть приняты. Не так ли?

У меня пакет общего хостинга с HostGator. И они разрешают работу cron тоже. А мое нынешнее приложение чата (которое использует метод длинных опросов) вставляет все сообщения в базу данных. Когда пользователь опрашивает, он будет искать любые новые сообщения из базы данных и затем выводить их (если есть).

Итак, я немного застрял здесь. (

Ответы [ 3 ]

5 голосов
/ 21 января 2012

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

Опция "-q" запрещает выводить заголовки браузера, такие как X-Powered-By: PHP или Content-Type: text/html

.столько памяти, сколько требуется PHP, до тех пор, пока он работает.Ваш объем памяти при запуске без клиентов будет варьироваться в зависимости от конфигурации.Чем больше подключенных клиентов, тем больше дескрипторов процессора, памяти и сокетов вы будете использовать.Он использует select, так что это эффективная обработка сокетов.

Кроме того, поскольку вы находитесь на виртуальном хостинге, вы, вероятно, не сможете его использовать, поскольку ваш пользователь, скорее всего, не сможет связываться спорт и прослушивание соединений.

Как видно из демонстрации, URL для подключения к WebSocket - ws://localhost:12345/websocket/server.php.Если у вас нет веб-сервера, способного использовать WebSockets, вам придется запускать что-то вроде phpWebSocket, который действует как сервер и прослушивает порт, отличный от 80.

Надеюсь, это поможет.

2 голосов
/ 02 июля 2013

Пакет общего хостинга для HostGator не позволяет клиентам связываться с локальными портами для входящих. Это может быть частью проблемы.

http://support.hostgator.com/articles/pre-sales-policies/socket-connections

0 голосов
/ 13 декабря 2017

может быть, вы можете использовать CronJob для запуска командной строки,

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