개발자 Q&A

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

2025.03.16 11:23

GearmanClient::addTaskHigh 관련 질문

  • 마이크로서비스연구가 2시간 전 2025.03.16 11:23 새글
  • 1
    1
제가 GearmanClient::addTaskHigh 함수를 사용하여 작업을 등록했을 때, 작업이 성공적으로 등록되고 작업아이디를 받는 데 성공했습니다. 하지만, 작업아이디를 사용하여 작업의 상태를 확인하려고 하는데, 작업의 상태를 가져올 때 에러가 발생하고 있습니다.

에러 메시지는 다음과 같습니다.

"GearmanClient::addTaskHigh() function failed with error code: 0"

제가 작업의 상태를 가져올 때 사용한 코드는 다음과 같습니다.

php

$client = new GearmanClient();

$client->addServer("localhost", 4730);

$client->addTaskHigh("my_task", "my_function", "arg1", "arg2");

$job = $client->jobStatus($client->doHighPriorityBackground("my_task"));



if ($job) {

    echo "Job ID: " . $job['job_handle'] . "n";

    echo "Job Status: " . $job['state'] . "n";

} else {

    echo "Job not foundn";

}



위의 코드에서, 작업의 상태를 가져오려고 하는 부분이 에러가 발생합니다.

에러가 발생하는 이유는 무엇이며, 작업의 상태를 가져올 때 사용하는 코드가 올바른지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  2시간 전



    GearmanClient::addTaskHigh 함수를 사용하여 작업을 등록하고, 작업아이디를 받은 후 작업의 상태를 가져올 때 에러가 발생하는 이유는 다음과 같습니다.

    1. `doHighPriorityBackground` 함수를 사용하여 작업아이디를 가져올 때, 작업이 성공적으로 등록되지 않은 경우 `NULL` 값을 반환합니다. 따라서 `jobStatus` 함수를 호출할 때 `NULL` 값을 전달하여 에러가 발생합니다.

    2. `jobStatus` 함수를 호출할 때, 작업아이디가 유효하지 않은 경우 에러가 발생합니다. 따라서 작업아이디가 유효한지 확인해야 합니다.

    3. `jobStatus` 함수를 호출할 때, 작업이 완료된 경우 `NULL` 값을 반환합니다. 따라서 작업이 완료된 경우 `NULL` 값을 전달하여 에러가 발생합니다.

    올바른 코드를 사용하기 위해서는 다음과 같이 수정해야 합니다.

    #hostingforum.kr
    php
    
    $client = new GearmanClient();
    
    $client->addServer("localhost", 4730);
    
    $client->addTaskHigh("my_task", "my_function", "arg1", "arg2");
    
    $job_handle = $client->doHighPriorityBackground("my_task");
    
    
    
    if ($job_handle !== NULL) {
    
        $job = $client->jobStatus($job_handle);
    
        if ($job !== NULL) {
    
            echo "Job ID: " . $job['job_handle'] . "n";
    
            echo "Job Status: " . $job['state'] . "n";
    
        } else {
    
            echo "Job not foundn";
    
        }
    
    } else {
    
        echo "Job not foundn";
    
    }
    
    


    이 코드에서는 `doHighPriorityBackground` 함수를 사용하여 작업아이디를 가져올 때, 작업이 성공적으로 등록되지 않은 경우 `NULL` 값을 반환하는 것을 확인합니다. 그리고 `jobStatus` 함수를 호출할 때, 작업아이디가 유효한지 확인하고, 작업이 완료된 경우 `NULL` 값을 반환하는 것을 확인합니다.

    2025-03-16 11:24

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

검색

게시물 검색