программирование php-сокетов, плюсы и минусы и подход - PullRequest
0 голосов
/ 07 февраля 2011

Я работаю над задачей, в которой требуется распространять оперативные данные (извлекаемые с какого-либо другого сервера) на клиент с использованием сокетов.Мы используем drupal в качестве фреймворка и, следовательно, мой выбор PHP.

1) Я хочу знать основные факторы, которые следует учитывать при разработке этого сервера. Как безопасность, аутентификация,загрузить и т.д. и как я должен подходить к этому. Есть ли блог / статья, которая может быть полезна.

2) Есть ли лучший выбор для этого, чем PHP?

3) ТАКЖЕ есть какой-нибудь друпал модуль, который мог бы помочь мне в этом.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2011
  1. Я могу подумать об одной проблеме, когда вы говорите о нескольких серверах, соединяющихся с вами, возможно, вы захотите уступить неблокирующему режиму.
    Потому что, когда вы работаете с блокирующим модом, каждый сервер может подключиться одновременно, а это означает, что будет задержка доставки сообщения. http://il2.php.net/manual/en/function.socket-set-nonblock.php

  2. Я думаю, что лучше выбрать java, здесь может помочь многопоточность.

  3. с моей точки зрения, это то, что вам нужно, чтобы развить себя, программированию сокетов нужно много внимания.

1 голос
/ 15 февраля 2011

Drupal - это веб-CMS, его можно использовать в качестве framework для расширенных веб-функций или легкого и среднего веб-приложения, которое хорошо вписывается в традиционную парадигму HTTP-запроса .ИМХО, распространение оперативных данных от нескольких серверов к клиенту с использованием сокетов не соответствует базовому предположению, лежащему в основе дизайна Drupal.

PHP может использоваться для написания сокет-сервера.Раньше это было необычно, но становится все более доступным. ReactPHP - это неблокирующая библиотека ввода / вывода, подходящая для программирования сокетов. Racthet - сервер веб-сокетов на PHP, использующий ReactPHP.

В любом случае, это не что иное, как разработка веб-приложения с RoR, Drupal, Django, Symfony,и т. д.

Если требуется интеграция с веб-сайтом Drupal, сервисный модуль является хорошим решением для предоставления REST или XML-RPC API.Конечно, прямой доступ к базе данных MySQL в Drupal также возможен, но, вероятно, потребуется больше знаний об используемых модулях Drupal, поскольку вам придется копировать их поведение и понимать, как они управляют своими данными (например, как хранится конкретное поле CCK).в вашей базе данных).

Примечание. Предыдущая версия этого ответа содержала ссылку на следующие решения на других языках: Twisted (Python), EventMachine (Ruby) и Node.js (JavaScript).Все это действительные решения, когда PHP не требуется.Предыдущая версия ответа также ссылалась на phpsocketdaemon , но в настоящее время ReactPHP является более чистым и надежным решением.

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