onWorkerReload

Требуется (workerman >= 3.2.5)

Описание:

callback Worker::$onWorkerReload

Эта функция используется нечасто.

Настраивает обратный вызов, который выполняется после получения Worker сигнала reload.

С помощью обратного вызова onWorkerReload можно сделать много чего, например, перезагрузить файл конфигурации бизнеса без необходимости перезапускать процесс.

Внимание

По умолчанию, когда дочерний процесс получает сигнал reload, он завершает работу и перезапускается, чтобы новый процесс мог перезагрузить бизнес-код для завершения обновления кода. Поэтому нормальным является то, что дочерний процесс сразу же завершится после выполнения обратного вызова onWorkerReload.

Если после получения сигнала reload вы хотите, чтобы дочерний процесс выполнил только onWorkerReload и не завершался, вы можете установить соответствующее свойство reloadable экземпляра Worker в false при инициализации.

Параметры обратного вызова

$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;
// После выполнения reload сообщите всем клиентам, что сервер выполнил перезагрузку
$worker->onWorkerReload = function(Worker $worker)
{
    foreach($worker->connections as $connection)
    {
        $connection->send('worker reloading');
    }
};
// Запуск worker
Worker::runAll();

Подсказка: помимо использования анонимных функций в качестве обратных вызовов, вы можете ознакомиться здесь с другими способами написания обратных вызовов.