reloadable

설명:

bool Worker::$reloadable

php start.php reload를 실행하면 모든 자식 프로세스에 reload 신호(SIGUSR1)가 전송됩니다.

자식 프로세스가 reload 신호를 받으면 자동으로 종료되고, 그 후 마스터 프로세스가 새로운 프로세스를 자동으로 생성합니다. 이는 일반적으로 비즈니스 코드를 업데이트하는 데 사용됩니다.

프로세스가 $reloadable이 false일 때, reload 신호를 받으면 onWorkerReload가 트리거되지만, 현재 프로세스는 재시작되지 않습니다.

예를 들어, Gateway/Worker 모델에서 gateway 프로세스는 클라이언트 연결을 유지하는 작업을 담당하고, worker 프로세스는 요청을 처리합니다. gateway 프로세스의 reloadable 속성을 false로 설정하면 클라이언트 연결을 끊지 않고 비즈니스 코드를 업데이트할 수 있습니다.

예제

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