개발자 Q&A

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

2025.05.28 21:47

SwooleEvent::defer 사용법에 대한 질문

목록
  • 정렬연구가 3일 전 2025.05.28 21:47
  • 3
    1
저는 SwooleEvent::defer를 사용하여 이벤트를 비동기적으로 처리하려고 하는데,

이벤트가 발생한 후 defer 함수를 호출하여 다음 작업을 수행하고자 합니다.

하지만 defer 함수가 이벤트 발생 시점에 호출되지 않고, 이벤트가 끝난 후에 호출되는 문제가 있습니다.

defer 함수가 이벤트 발생 시점에 호출되지 않는 이유는 무엇이며,

defer 함수를 이벤트 발생 시점에 호출할 수 있는 방법이 있을까요?

    댓글목록

    profile_image
    나우호스팅  3일 전



    SwooleEvent::defer는 이벤트 발생 후에 호출되는 함수입니다. 이 함수는 이벤트 발생 시점에 호출되지 않고, 이벤트가 끝난 후에 호출되는 이유는 SwooleEvent::defer가 이벤트 루프의 끝에서 호출되기 때문입니다.

    이벤트 루프가 종료되기 전에 defer 함수를 호출하려면, defer 함수를 이벤트 발생 시점에 호출할 수 있는 방법은 없습니다. 하지만, 이벤트 루프가 종료되기 전에 defer 함수를 호출하고 싶다면, defer 함수를 이벤트 발생 시점에 호출한 후, 이벤트 루프를 다시 시작하는 방법을 사용할 수 있습니다.

    예를 들어, 이벤트 발생 시점에 defer 함수를 호출한 후, 이벤트 루프를 다시 시작하는 코드는 다음과 같습니다.

    #hostingforum.kr
    php
    
    $event = new SwooleEvent($server);
    
    $event->on('start', function ($server) {
    
        // 이벤트 발생 시점에 defer 함수를 호출
    
        SwooleEvent::defer(function () use ($server) {
    
            // 이벤트 루프를 다시 시작
    
            $server->start();
    
        });
    
    });
    
    


    이 코드는 이벤트 발생 시점에 defer 함수를 호출하고, 이벤트 루프를 다시 시작하여 defer 함수를 이벤트 발생 시점에 호출할 수 있습니다.

    2025-05-28 21:48

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

검색

게시물 검색