Добрый день, допустим взять стандартный код вебсокета workerman PHP: <?php use Workerman\Worker; require_once __DIR__ . '/vendor/autoload.php'; $ws_worker = new Worker('websocket://0.0.0.0:2346'); $ws_worker->count = 4; $ws_worker->onConnect = function ($connection) { echo "New connection\n"; }; $ws_worker->onMessage = function ($connection, $data) { $connection->send('Hello ' . $data); }; $ws_worker->onClose = function ($connection) { echo "Connection closed\n"; }; Worker::runAll(); И запустить его через консоль, все работает. Код (Text): php start.php start Но на эти манипуляции, он не реагирует, при любой команде будет запуск вебсокета. Код (Text): Start Run as debug mode php start.php start Run as daemon mode php start.php start -d Stop php start.php stop Restart php start.php restart Graceful restart php start.php reload Status php start.php status Вот документация но там подробностей нет, просто команды: https://github.com/walkor/workerman-manual/blob/master/english/src/SUMMARY.md Подскажите почему так?
Итак, я начал ковырять в чем же дело. И выяснилось. Когда эта библиотека запущена под LINUX она может завершать запущенные процессы через php. То есть берется PID процесса, записывается в файлик. Потом во время выполнения команд он смотрит на этот PID в файлике, ищет его в процессах LINUX и манипулирует ими. Под WINDOWS видимо это не доступно и создатели отключили эту возможность. Пока я проделал следующие шаги, может кто поможет что можно дальше сделать. Сначала сделаем так, чтобы PID процесса записывался в файлик 1. Открываем фаил Worker.php . 2. Находим через поиск \posix_getpid() и заменяем везде его на функцию getmypid() https://www.php.net/manual/ru/function.getmypid.php 3. Находим функцию protected static function saveMasterPid() и закомментируем там эти строки: PHP: // if (static::$_OS !== \OS_TYPE_LINUX) { // return; // } 4. Теперь запустим вебсокет например наш фаил называется start.php Код (Text): php start.php 5. Рядом с нашим файлом должен создаться такой файлик start.php.pid . А внутри него должен быть записан PID. 6. Проверим действительно ли PID совпадает с нашим запущенным процессом, наберем в консоле команду tasklist. Находим процесс php.exe и смотрим его PID . Если цифры в файлике и в консоле совпадают то все хорошо. Теперь осталось только каким то образом научится завершать процессы в windows по PID. Буду копать дальше.