onWorkerReload

要求(workerman >= 3.2.5)

說明:

callback Worker::$onWorkerReload

這個特性並不常用。

設置當Worker接收到reload信號後執行的回調函數。

可以利用onWorkerReload回調函數做很多事情,例如在不需要重啟進程的情況下重新加載業務配置文件。

注意

子進程收到reload信號默認的動作是退出重啟,以便新進程重新加載業務代碼完成代碼更新。所以reload後子進程在執行完onWorkerReload回調後便立刻退出是正常現象。

如果在收到reload信號後只想讓子進程執行onWorkerReload,不想退出,可以在初始化Worker實例時設置對應的Worker實例的reloadable屬性為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後告訴所有客戶端服務端執行了reload
$worker->onWorkerReload = function(Worker $worker)
{
    foreach($worker->connections as $connection)
    {
        $connection->send('worker reloading');
    }
};
// 運行worker
Worker::runAll();

提示:除了使用匿名函數作為回調,還可以參考這裡使用其他回調寫法。