Обычно, если вы пишете сервер сокетов на PHP, вам нужно запускать его через командную строку. Вам следует принять во внимание следующие моменты:
Вам нужен доступ к сокетам, которых обычно нет на общем сервере, поэтому вам придется купить себе VPS.
Вам нужно создать файл на своем сервере, который будет автоматически запускать ваш PHP-скрипт при каждой перезагрузке сервера. Обычно это делается путем помещения сценария оболочки, который запускает сценарий PHP, в /etc/init.d, а затем размещения символической ссылки на сценарий оболочки в /etc/rc5.d (при условии, что это ваш уровень по умолчанию).
Вы также, скорее всего, не захотите / не нуждаетесь в запуске Apache, если только вы не планируете использовать этот сервер в качестве файлового сервера. Если вы используете его исключительно для сервера сокетов, вам может потребоваться установить PHP-CLI. Это сэкономит вам память.
Если вы пытаетесь взаимодействовать в реальном времени между пользователями, подключенными к вашему серверу, возможно, вы вообще не захотите задействовать базу данных. На вашем сервере сокетов будет список всех подписчиков, подключенных к серверу сокетов, поэтому, когда один из них отправит вам сообщение, вы можете немедленно отправить это сообщение обратно всем подключенным подписчикам, не сохраняя ничего в медленной базе данных. В качестве альтернативы вы можете сохранить информацию в памяти, если можете себе это позволить.
Есть решение для сокетов, не поддерживаемых во всех браузерах, под названием socket.io. В основном я считаю, что он пытается настроить веб-сокет браузера, если он поддерживается, но если он не поддерживается, он запускает соединение с сокетом Flash. В любом случае вы используете один и тот же интерфейс для взаимодействия с ним.
Вы также можете рассмотреть другой язык для создания сервера сокетов. PHP на самом деле не создан для такого рода вещей. Лучшим языком для использования был бы Javascript, особенно если масштабируемость вызывает беспокойство. Node.js - это библиотека, которая позволит вам довольно легко построить сервер сокетов и будет намного более масштабируемой.
person
dqhendricks
schedule
16.03.2012