reloadable

説明:

bool Worker::$reloadable

php start.php reloadを実行すると、すべての子プロセスにreload信号(SIGUSR1)が送信されます。

子プロセスがreload信号を受信すると、自動的に終了し、主プロセスは自動的に新しいプロセスを立ち上げます。これは通常、ビジネスコードを更新するために使用されます。

プロセス$reloadableがfalseの場合、reload信号を受信するとonWorkerReloadがトリガーされるだけで、現在のプロセスは再起動しません。

例えばGateway/Workerモデルにおいて、gatewayプロセスはクライアント接続の維持を担当し、workerプロセスはリクエストの処理を担当します。
gatewayプロセスのreloadable属性をfalseに設定すると、reload時にクライアント接続を切断せずにビジネスコードを更新できます。

use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker('websocket://0.0.0.0:8484');
// このインスタンスがreload信号を受け取った際に再起動するかどうかを設定
$worker->reloadable = false;
$worker->onWorkerStart = function($worker)
{
    echo "Worker starting...\n";
};
// workerを実行
Worker::runAll();