Мне было интересно, может ли PHP действовать как сервер через порт TCP? Сколько IDLE-соединений может обрабатывать сервер RAM 1 ГБ? Может ли PHP получать много соединений с одним TCP-портом (например, apache на порту 80?)
Если у меня есть клиент, подключенный к сокету, открытому PHP, как я могу отправить ему данные? (например, a.php прослушивает порт 5000, какой-то клиент подключен, позже b.php нужно что-то отправить этому клиенту, хорошо нажимайте сообщение?)
Или я буду использовать UDP вместо этого?
Друг, мой первый совет: даже если PHP может сделать это изначально. PHP не является лучшей технологией для реализации TCP Sockets Server. Причина заключается в том, что помните, что php имеет max_execution_time для каждого скрипта и делает запуск сервера вечно, для этого потребуется установить значение 0, которое означает навсегда. Количество подключений 1gb сервера ram-сервера зависит от того, сколько ram и процессор потребляют каждый php-процесс.
Но в любом случае, если вы решите сделать это с помощью php. Да, вы можете построить с php асинхронный сервер сокетов tcp.
Просто создайте мастер-сокет, прослушивающий 5000 (например). И для каждого клиентского сокета, который подключается к этому главному сокету, создайте дочерний сокет со случайным свободным портом (выбранным os) для каждого входящего соединения, и вы можете начать разговор с дочерним сокетом, освободив ведущего, чтобы продолжить прослушивание другого входящего соединения соединения.