PHP сокеты того стоят? - PullRequest
       13

PHP сокеты того стоят?

4 голосов
/ 12 сентября 2010

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

Мое приложение требует использования быстрой связи с сервером, поскольку оно будет включать такие функции, как приватный чат с другими пользователями и удаленное управление клиентом Flex с сервера.

Должен ли я использовать сокеты PHP в моей ситуации, или я должен найти альтернативный язык или даже альтернативу сокетам?Меня беспокоит то, что я начну использовать PHP-сокеты, но он не сможет справиться с нагрузкой.Скорость также может быть проблемой при использовании PHP.

Редактировать:

Спасибо за ответы, это высоко ценится.Как я понимаю, PHP стабилен , когда дело касается использования сокетов, но язык был разработан только для использования в среде запросов / ответов, как сказал Бенсон.

БлагодаряCornel, отличная альтернатива для моей ситуации при использовании Flex с сокетами, была обозначена как BlazeDS , использующая Java вместо PHP.

Ответы [ 4 ]

5 голосов
/ 13 сентября 2010

Определение собственного протокола через обычные сокеты для реализации обмена сообщениями и удаленного обмена данными займет значительное время - даже для основных функций обмена сообщениями. Я предлагаю использовать такой сервер, как BlazeDS, если это возможно, вам не нужно изобретать велосипед.

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

4 голосов
/ 12 сентября 2010

На самом деле, по моему опыту, сокеты PHP5 довольно хороши. Они написаны на C и встроены в двоичный файл PHP5, поэтому они будут работать быстро, в отличие от реализации в самом PHP.

Проверьте nanoweb и nanoserv:

http://nanoweb.si.kz/

http://nanoserv.si.kz/

Автор проделал впечатляющую работу по внедрению PHP-сокетов в работу, созданию мощного веб-сервера на чистом PHP с nanoweb и полной серверной инфраструктуры демона для PHP 5.1+ с nanoserv.

Просмотр документации и базы кода nanoserv может дать вам больше уверенности в сокетах PHP.

3 голосов
/ 12 сентября 2010

PHP будет в значительной степени отображаться на сокеты Linux или аналогичные, поэтому я не вижу причин, почему это плохая идея;поскольку PHP - это просто динамическое связывание реализации на языке C.

Глядя на http://svn.php.net/viewvc/php/php-src/trunk/ext/sockets/sockets.c,, это кажется довольно вменяемым.

Реализация, тестирование и тестирование производительности.Если это не дает сбой, достаточно быстро и подходящие ограничения ... пойти на это.

1 голос
/ 13 сентября 2010

Я также предлагаю node.js с sockets.io. Хотя это лучше, если вы хотите поддерживать открытое асинхронное соединение с сервером. Если вы просто делаете синхронные вызовы req / response, я бы просто использовал http + php.

Php действительно предназначен для использования в среде с общими запросами и ответами. Он не подходит в качестве реального сервера приложений. Node.js намного лучше для этого, но это JavaScript, так что лучше всего использовать json для сериализации.

Если производительность действительно важна (игра в реальном времени), тогда лучше использовать двоичный протокол. Действительно зависит от того, что делает ваше приложение. С помощью узла он json.decode 3k сообщений / сек на Linux Linux на моем ноутбуке. Достаточно быстро для всех, кроме игр в реальном времени.

...