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();

ヒント:匿名関数をコールバックとして使用する以外にも、こちらを参考にして他のコールバックの書き方を使用することができます。