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::runAll();
팁: 익명 함수 외에도 콜백으로서 여기를 참조하여 다른 콜백 방식 등을 사용할 수 있습니다.