Для работы с WebSocket из PHP требуется не только обычный PHP-код с циклами и пр., но и дополнительные возможности, сверх обычного PHP. Например,
Swoole, всяко рекомендую. Это модуль для PHP, позволяющий строить асинхронные высоконагруженные приложения. Код запускает под капотом несколько процессов, которые реагируют на события, не блокируют друг друга: пока один «ждёт», другие выполняются.
Вот
пример реализации WebSocket сервера и JS клиента.