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