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


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

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

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

Изменить:

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

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

Author: Joel Kennedy, 2010-09-12

4 answers

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

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

 5
Author: Cornel Creanga, 2010-09-12 21:20:43

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

Проверьте nanoweb и наносерв:

Http://nanoweb.si.kz/

Http://nanoserv.si.kz/

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

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

 4
Author: Docunext, 2010-09-12 16:37:59

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

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

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

 3
Author: Aiden Bell, 2010-09-12 16:45:10

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

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

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

 1
Author: Benson Wong, 2010-09-12 21:34:47