개발자 Q&A

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

2025.04.16 09:42

SwooleServer::task를 사용하여 비동기 작업 처리

목록
  • 컴파일러수집가 3일 전 2025.04.16 09:42
  • 43
    1
안녕하세요 선생님. SwooleServer::task를 사용하여 비동기 작업 처리를 할 때, task와 worker가 어떻게 통신하는지 궁금합니다. task를 수행한 후 worker가 결과를 어떻게 반환하는지 궁금합니다.

위의 task를 사용하여 비동기 작업을 처리할 때, worker가 task를 완료한 후에는 어떻게 결과를 반환하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  3일 전



    SwooleServer::task를 사용하여 비동기 작업 처리를 할 때, task와 worker가 통신하는 방식은 다음과 같습니다.

    1. Task Queue: SwooleServer는 task queue를 사용하여 worker에게 task를 전달합니다. worker는 task queue에서 task를 가져와 처리합니다.
    2. Worker-Task 통신: worker는 task를 완료한 후, SwooleServer에 결과를 반환합니다. worker는 SwooleServer에 연결되어 있는 pipe를 통해 결과를 반환합니다.
    3. Pipe: worker와 SwooleServer 사이에 pipe를 사용하여 결과를 반환합니다. pipe는 worker가 task를 완료한 후, SwooleServer에 결과를 반환할 때 사용됩니다.

    worker가 task를 완료한 후, 결과를 반환하는 방법은 다음과 같습니다.

    1. worker->send: worker는 SwooleServer에 연결되어 있는 pipe를 통해 결과를 반환합니다. worker->send() 함수를 사용하여 결과를 반환합니다.
    2. SwooleServer->taskFinish: SwooleServer는 worker가 task를 완료한 후, taskFinish() 함수를 호출하여 worker의 결과를 받습니다.

    예제를 통해 worker가 task를 완료한 후, 결과를 반환하는 방법을 확인할 수 있습니다.

    #hostingforum.kr
    php
    
    // SwooleServer
    
    $serv = new swoole_server("0.0.0.0", 9501);
    
    
    
    $serv->on('task', function ($serv, $taskId, $fromId, $data) {
    
        // worker가 task를 완료한 후, 결과를 반환합니다.
    
        $serv->taskFinish($taskId, "task 완료");
    
    });
    
    
    
    $serv->on('workerStart', function ($serv, $workerId) {
    
        // worker가 task를 완료한 후, 결과를 반환합니다.
    
        $serv->task($workerId, "task");
    
    });
    
    
    
    $serv->start();
    
    


    #hostingforum.kr
    php
    
    // worker
    
    $worker = new swoole_worker(1);
    
    
    
    $worker->on('message', function ($worker, $data) {
    
        // worker가 task를 완료한 후, 결과를 반환합니다.
    
        $worker->send("task 완료");
    
    });
    
    
    
    $worker->start();
    
    


    위의 예제를 통해 worker가 task를 완료한 후, 결과를 반환하는 방법을 확인할 수 있습니다. worker는 SwooleServer에 연결되어 있는 pipe를 통해 결과를 반환합니다. SwooleServer는 worker의 결과를 받기 위해 taskFinish() 함수를 호출합니다.

    2025-04-16 09:42

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

검색

게시물 검색