onWorkerReload
Требование (workerman >= 3.2.5)
Description:
callback Worker::$onWorkerReload
Эта функция редко используется.
Устанавливает обратный вызов для Worker, который будет выполнен после получения им сигнала reload.
Можно использовать обратный вызов onWorkerReload для множества задач, таких как перезагрузка конфигурационных файлов для бизнес-логики без необходимости перезапуска процессов.
Замечание:
По умолчанию дочерний процесс после получения сигнала reload выходит и перезапускается, чтобы новый процесс мог загрузить обновленный бизнес-код. Поэтому нормальным явлением является то, что дочерний процесс после выполнения обратного вызова onWorkerReload выходит.
Если после получения сигнала reload вы хотите, чтобы дочерний процесс выполнел обратный вызов onWorkerReload, но не выходил, вы можете установить свойство reloadable для соответствующего экземпляра Worker в false при инициализации экземляра Worker.
Параметры обратного вызова
$worker
Это объект Worker
Пример
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
// Установить reloadable в false, то есть дочерний процесс после получения сигнала reload не будет перезапускаться
$worker->reloadable = false;
// После выполнения перезагрузки сообщить всем клиентам, что сервер выполнел перезагрузку
$worker->onWorkerReload = function(Worker $worker)
{
foreach($worker->connections as $connection)
{
$connection->send('worker reloading');
}
};
// Запустить worker
Worker::runAll();
Примечание: Помимо использования анонимной функции в качестве обратного вызова, также можно ссылаться здесь на другие способы написания обратного вызова.