onWorkerReload
要求(workerman >= 3.2.5)
說明:
callback Worker::$onWorkerReload
此特性不常用到。
設(shè)置Worker收到reload信號(hào)后執(zhí)行的回調(diào)。
可以利用onWorkerReload回調(diào)做很多事情,例如在不需要重啟進(jìn)程的情況下重新加載業(yè)務(wù)配置文件。
注意:
子進(jìn)程收到reload信號(hào)默認(rèn)的動(dòng)作是退出重啟,以便新進(jìn)程重新加載業(yè)務(wù)代碼完成代碼更新。所以reload后子進(jìn)程在執(zhí)行完onWorkerReload回調(diào)后便立刻退出是正?,F(xiàn)象。
如果在收到reload信號(hào)后只想讓子進(jìn)程執(zhí)行onWorkerReload,不想退出,可以在初始化Worker實(shí)例時(shí)設(shè)置對(duì)應(yīng)的Worker實(shí)例的reloadable屬性為false。
回調(diào)函數(shù)的參數(shù)
$worker
即Worker對(duì)象
范例
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
// 設(shè)置reloadable為false,即子進(jìn)程收到reload信號(hào)不執(zhí)行重啟
$worker->reloadable = false;
// 執(zhí)行reload后告訴所有客戶端服務(wù)端執(zhí)行了reload
$worker->onWorkerReload = function(Worker $worker)
{
foreach($worker->connections as $connection)
{
$connection->send('worker reloading');
}
};
// 運(yùn)行worker
Worker::runAll();
提示:除了使用匿名函數(shù)作為回調(diào),還可以參考這里使用其它回調(diào)寫法。