개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.08 14:25

Swoole Timer Tick 관련 질문

목록
  • Rust연구가 13시간 전 2025.07.08 14:25 새글
  • 6
    1
저는 Swoole Timer Tick를 사용하여 스케줄링을 구현하고 있는데, 타이머가 정상적으로 작동하지 않는 문제가 있습니다.

1. 스케줄링을 설정하는 부분에서, `swoole_timer_tick` 함수의 두 번째 인자로 `function`을 사용하여 callback 함수를 등록하는 방법이 맞는지 궁금합니다.
2. callback 함수 내에서 `yield` 키워드를 사용하여 비동기 작업을 처리할 수 있는지 궁금합니다.
3. 타이머를 등록하고 취소하는 방법에 대한 예제를 부탁드립니다.

위의 질문에 대한 답변을 부탁드립니다.

    댓글목록

    profile_image
    나우호스팅  13시간 전



    1. `swoole_timer_tick` 함수의 두 번째 인자로 `function`을 사용하여 callback 함수를 등록하는 방법은 맞습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    swoole_timer_tick($server, function ($timer_id) {
    
        // 타이머 콜백 함수
    
    }, 1000); // 1초마다 호출
    
    


    2. callback 함수 내에서 `yield` 키워드를 사용하여 비동기 작업을 처리하는 것은 가능합니다. 하지만, Swoole의 스레드 모델은 코루틴을 지원하지 않기 때문에, `yield` 키워드는 사용할 수 없습니다. 대신, 비동기 작업을 처리하기 위해 `swoole_timer_after` 함수를 사용하거나, `swoole_timer_tick` 함수를 사용하여 반복적으로 호출하는 방법을 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    function callback($timer_id) {
    
        // 비동기 작업
    
        // ...
    
        // 작업이 완료되면, 다음 작업을 위해 타이머를 다시 등록합니다.
    
        swoole_timer_tick($server, 'callback', 1000);
    
    }
    
    
    
    swoole_timer_tick($server, 'callback', 1000);
    
    


    3. 타이머를 등록하고 취소하는 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    // 타이머 등록
    
    $timer_id = swoole_timer_tick($server, function ($timer_id) {
    
        // 타이머 콜백 함수
    
    }, 1000);
    
    
    
    // 타이머 취소
    
    swoole_timer_clear($server, $timer_id);
    
    


    위의 예제에서, `$server`는 Swoole 서버 객체를 나타내며, `$timer_id`는 타이머 ID를 나타냅니다.

    2025-07-08 14:26

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 34,347건 / 6 페이지

검색

게시물 검색