개발자 Q&A

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

2025.07.05 12:10

SwooleServer::taskWaitMulti 함수 이해 필요

목록
  • 인덱스튜너 11일 전 2025.07.05 12:10 인기
  • 211
    1
저는 SwooleServer::taskWaitMulti 함수를 사용하여 작업을 대기시키는 방법을 모르겠습니다.

SwooleServer::taskWaitMulti 함수는 여러 작업을 동시에 대기시키는 기능을 제공합니다.
하지만, 저는 이 함수를 사용하여 작업을 대기시키는 방법을 정확히 이해하지 못하고 있습니다.

이 함수를 사용하여 작업을 대기시키는 방법을 알려주실 수 있을까요?
또한, 작업을 대기시키는 동시에 다른 작업을 처리하는 방법도 알려주실 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  11일 전



    SwooleServer::taskWaitMulti 함수는 여러 작업을 동시에 대기시키는 기능을 제공합니다. 이 함수를 사용하여 작업을 대기시키는 방법은 다음과 같습니다.

    1. 작업을 대기시키기 위해 taskWaitMulti 함수를 호출합니다.
    2. taskWaitMulti 함수는 여러 작업을 동시에 대기시키기 때문에, 작업이 완료될 때까지 대기합니다.
    3. 작업이 완료되면, taskWaitMulti 함수는 완료된 작업의 ID를 반환합니다.

    작업을 대기시키는 동시에 다른 작업을 처리하는 방법은 다음과 같습니다.

    1. 다른 작업을 처리하기 위해 task 함수를 호출합니다.
    2. task 함수는 작업을 처리하고, 작업이 완료되면 완료된 작업의 ID를 반환합니다.
    3. taskWaitMulti 함수는 작업을 대기시키기 때문에, 다른 작업을 처리하는 동안에도 대기합니다.

    예제를 통해 이해를 돕겠습니다.

    #hostingforum.kr
    php
    
    $serv = new swoole_server("0.0.0.0", 9501);
    
    $serv->set(array(
    
        'worker_num' => 4,
    
        'task_worker_num' => 4,
    
    ));
    
    
    
    $serv->on('connect', function ($serv, $fd, $from_id) {
    
        echo "Client: $fd connect.n";
    
    });
    
    
    
    $serv->on('receive', function ($serv, $fd, $from_id, $data) {
    
        // 작업을 대기시키기 위해 taskWaitMulti 함수를 호출합니다.
    
        $task_id = $serv->taskWaitMulti(1, 2, 3);
    
        echo "Task ID: $task_idn";
    
    
    
        // 다른 작업을 처리하기 위해 task 함수를 호출합니다.
    
        $serv->task("Task 1");
    
        $serv->task("Task 2");
    
    
    
        // 작업이 완료되면, taskWaitMulti 함수는 완료된 작업의 ID를 반환합니다.
    
        while ($task_id > 0) {
    
            $task_id = $serv->taskGet($task_id);
    
            echo "Task ID: $task_idn";
    
        }
    
    });
    
    
    
    $serv->on('task', function ($serv, $task_id, $from_id, $data) {
    
        echo "Task ID: $task_id, Data: $datan";
    
        // 작업을 처리합니다.
    
        sleep(2);
    
        $serv->taskDone($task_id);
    
    });
    
    
    
    $serv->on('taskdone', function ($serv, $task_id) {
    
        echo "Task ID: $task_id done.n";
    
    });
    
    
    
    $serv->start();
    
    


    이 예제에서는 taskWaitMulti 함수를 사용하여 작업을 대기시키고, 다른 작업을 처리하는 방법을 보여줍니다. 작업이 완료되면, taskWaitMulti 함수는 완료된 작업의 ID를 반환합니다.

    2025-07-05 12:11

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

검색

게시물 검색