2012-12-17 26 views
1

我想設置齒輪工作的超時時間。例如,我不希望減速機作業運行時間超過30秒,如果作業運行時間超過30秒,應該停止並開始下一個作業。如何設置齒輪工作的超時時間

這對Gearman來說可能嗎? (我使用了PHP的Gearman API在CentOS 6.2)

回答

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當您調用'work()'時,工作者超時開始工作,之前的睡眠不做任何事情。 – algorhythm