Ответ 1
Проблема заключается в том, что WebSockets предназначены для длительных потоков/процессов, каждый из которых поддерживает несколько подключений, связанных с событиями, тогда как PHP (и его когорт Apache) был разработан вокруг процедурной парадигмы краткосрочного одиночного процесса (например, max_execution_time
обычно устанавливается на 30 секунд, а сеанс однопоточный).
Это не означает, что невозможно написать реализацию сервера WebSockets в PHP. Я знаю, что существует хотя бы один проект, который выполнил именно это (но обратите внимание, что даже этот пример запускается из командной строки, а не через mod_php
). Но вполне вероятно, что реализация PHP WebSockets несовместима с настройкой дешевого/общедоступного хостинга, где наиболее часто используется PHP.
Итак, хотя это возможно в PHP, вам все равно придется запускать отдельный серверный процесс (из Apache), и если вы находитесь на ходу, который позволяет разделить серверные процессы, тогда проще написать код WebSockets в чем-то, предназначенном для программирования, управляемого событиями.
Если вы не собираетесь обслуживать десятки тысяч одновременных дуплексных соединений, скорее всего, вам будет лучше использовать комбинацию AJAX и SSE с вашим исходным кодом PHP.