Можно это сделать двумя способами:
- Доработать PHP-код, чтобы он реагировал на сигналы, переданные через вебсокет. Например, если ему послать команду «stop», то он должен останавливаться и, соответственно, процесс завершается, освобождая TTY или тот скрипт, который запускал этот вебсокет.
- Скрипт с вебсокетом можно запускать в фоновом режиме, а потом, если нужно его завершить, просто убивать процесс по его PID. Чтобы запустить скрипт в фоновом режиме, нужно добавить
&
в конце команды. Для примера: php bin/chat-server.php &
Судя по вашей терминологии («перезагрузка php») вы из скрипта PHP вызываете команду
php bin/chat-server.php
, а сам этот скрипт вызывается с помощью HTTP-запроса из браузера. В этом случае имеется ввиду перезагрузка PHP-FPM, так? Если так, то самое простое решение проблемы с подвисанием скрипта — это способ 2.