2012-12-17 3 views
1

Gearman 작업의 제한 시간을 설정하려고합니다. 예를 들어, 기어 작업이 30 초 이상 실행되는 것을 원하지 않으며, 작업이 30 초 이상 실행되고 있으면 작업을 중지하고 다음 작업을 시작해야합니다.gearman 작업에 대한 시간 초과 설정 방법

Gearman에서 가능합니까? (나는를 CentOS 6.2에 Gearman을 PHP API를 사용하고) 당신이 찾고있는 무엇

답변

2

여기 GearmanWorker::timeout하는 Good Example

//Set Timeout 
$gmworker->setTimeout(5000); 

echo "Waiting for job...\n"; 

// Start working 
while (@$gmworker->work() || $gmworker->returnCode() == GEARMAN_TIMEOUT) { 
    if ($gmworker->returnCode() == GEARMAN_TIMEOUT) { 
     // Normally one would want to do something useful here ... 
     continue; 
    } 

    if ($gmworker->returnCode() != GEARMAN_SUCCESS) { 
     // Somthign failed 
     break; 
    } 
} 
+0

이 잘못이다 -의 setTimeout은 어떤 소켓 IO에서 작동, 작업자가 실행할 수 있습니다 원하는 모든 시간. 나는'setTimeout (1000)'다음에'sleep (3)'을 추가하려고 시도했지만,'GEARMAN_TIMEOUT'에서는 끝나지 않습니다. 내가 틀렸다고 증명할 테스트 케이스를 제공해주세요. – Fluffy

+0

@Fluffy worker timeout은'work()'를 호출 할 때 작동하기 시작합니다. 잠자기 전에 아무것도하지 않습니다. – algorhythm