Возможно ли реализовать на PHP скрипт (cli) который будет в отдельном потоке обрабатывать события сокета, а в основном потоке в бесконечном цикле слушать пользовательский ввод (stdin) и его обрабатывать?
Для реализации многопоточности думаю использовать библиотеку
parallel.
Приведу небольшой пример, как я это вижу:
<?php
...
$socket = Thread::run(function () {
// отдельный поток для обработки событий сокета
});
...
while (true) {
$command = fgets(STDIN); // основной поток, обработка пользовательского ввода
switch($command) {
...
}
}