개발자 Q&A

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

2025.07.06 21:00

SwooleServer::taskWaitMulti 사용법에 대한 질문

목록
  • 깃허브액션도사 12일 전 2025.07.06 21:00
  • 41
    1
저는 SwooleServer를 사용하여 비동기 작업을 처리하고 있는데, taskWaitMulti 메서드를 사용하여 여러 작업의 결과를 기다리기 위해 사용하고 있습니다.

taskWaitMulti 메서드는 여러 작업의 결과를 동시에 기다리기 위해 사용할 수 있습니다. 하지만, 이 메서드는 여러 작업의 결과를 배열로 반환합니다. 이 배열은 작업의 결과가 완료되었는지 여부를 나타내는 배열과 함께 반환됩니다.

예를 들어, taskWaitMulti 메서드를 사용하여 5개의 작업을 동시에 처리하게 되면, 작업의 결과가 완료되었는지 여부를 나타내는 배열이 반환됩니다. 이 배열에는 작업의 결과가 완료되었는지 여부를 나타내는 boolean 값이 포함되어 있습니다.

제가 이해한 것과 다르게, taskWaitMulti 메서드의 반환 값이 어떻게 결정되는지 궁금합니다.

해결을 도와주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  12일 전



    SwooleServer::taskWaitMulti 메서드는 여러 작업의 결과를 동시에 기다리기 위해 사용하는 메서드입니다. 이 메서드는 작업의 결과가 완료되었는지 여부를 나타내는 배열과 함께 작업의 결과를 배열로 반환합니다.

    taskWaitMulti 메서드의 반환 값은 작업의 결과가 완료되었는지 여부를 나타내는 배열과 함께 작업의 결과를 배열로 반환합니다. 이 배열의 인덱스는 작업 ID를 나타내며, 값은 작업의 결과를 나타냅니다.

    예를 들어, taskWaitMulti 메서드를 사용하여 5개의 작업을 동시에 처리하게 되면, 작업의 결과가 완료되었는지 여부를 나타내는 배열이 반환됩니다. 이 배열에는 작업의 결과가 완료되었는지 여부를 나타내는 boolean 값이 포함되어 있습니다.

    taskWaitMulti 메서드의 반환 값은 다음과 같이 결정됩니다.

    - 작업 ID가 짝수인 경우, 작업의 결과가 완료되었는지 여부를 나타내는 boolean 값이 반환됩니다.
    - 작업 ID가 홀수인 경우, 작업의 결과가 완료되었는지 여부를 나타내는 boolean 값과 작업의 결과를 나타내는 값이 반환됩니다.

    예를 들어, taskWaitMulti 메서드를 사용하여 5개의 작업을 동시에 처리하게 되면, 작업의 결과가 완료되었는지 여부를 나타내는 배열이 반환됩니다. 이 배열에는 작업의 결과가 완료되었는지 여부를 나타내는 boolean 값이 포함되어 있습니다.

    #hostingforum.kr
    php
    
    $server = new SwooleServer("0.0.0.0", 9501, SWOOLE_BASE);
    
    $server->set([
    
        'task_worker_num' => 4,
    
    ]);
    
    
    
    $server->on('start', function ($server) {
    
        echo "Swoole server is started at http://0.0.0.0:9501n";
    
    });
    
    
    
    $server->on('task', function ($server, $taskId, $fromId, $data) {
    
        // 비동기 작업을 처리하는 코드
    
        echo "Task $taskId is startedn";
    
        sleep(2);
    
        echo "Task $taskId is finishedn";
    
        $server->finish($data);
    
    });
    
    
    
    $server->on('finish', function ($server, $taskId, $data) {
    
        echo "Task $taskId is finished with data: $datan";
    
    });
    
    
    
    $server->on('shutdown', function ($server) {
    
        echo "Swoole server is shutdownn";
    
    });
    
    
    
    $server->start();
    
    
    
    // 비동기 작업을 요청하는 코드
    
    $server->task(["data1"]);
    
    $server->task(["data2"]);
    
    $server->task(["data3"]);
    
    $server->task(["data4"]);
    
    $server->task(["data5"]);
    
    
    
    // 작업의 결과를 기다리는 코드
    
    $result = $server->taskWaitMulti([1, 2, 3, 4, 5]);
    
    print_r($result);
    
    


    이 예제에서는 taskWaitMulti 메서드를 사용하여 5개의 작업을 동시에 처리하고, 작업의 결과가 완료되었는지 여부를 나타내는 배열과 함께 작업의 결과를 배열로 반환합니다.

    2025-07-06 21:01

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

검색

게시물 검색