
SwooleEvent::add 메소드를 사용하여 이벤트를 등록할 때, 이벤트 핸들러 함수를 등록할 때, 이벤트 이름을 'timer'로 지정하였습니다. 하지만 이벤트가 실행되지 않는 이유는 이벤트 이름을 'timer'로 지정하였기 때문입니다.
SwooleEvent::add 메소드에서 이벤트 이름을 'timer'로 지정하면, Swoole의 Timer 이벤트를 등록하는 것입니다. Timer 이벤트는 스레드에서 실행되기 때문에, 이벤트 핸들러 함수를 등록할 때, 스레드에서 실행될 수 있는 함수를 등록해야 합니다.
만약 이벤트 핸들러 함수를 스레드에서 실행되지 않는 함수로 등록하면, 이벤트가 실행되지 않을 것입니다.
따라서, 이벤트 핸들러 함수를 스레드에서 실행될 수 있는 함수로 등록해야 합니다. 예를 들어, 다음과 같이 이벤트 핸들러 함수를 등록할 수 있습니다.
#hostingforum.kr
php
$swooleEvent = new SwooleEvent();
$swooleEvent->add('timer', function ($serv, $data) {
// 스레드에서 실행될 수 있는 함수
echo "Timer Eventn";
// 스레드에서 실행될 수 있는 함수
swoole_timer_tick(1000, function ($timer_id) {
echo "Timer Tickn";
});
});
이벤트 핸들러 함수를 스레드에서 실행될 수 있는 함수로 등록하면, 이벤트가 실행될 것입니다.
2025-07-12 22:38