如果使用此方法設定逾時,且發生逾時,呼叫 ->returnCode() 將會回傳 GEARMAN_TIMEOUT。
請注意,例如 doBackground() 呼叫的逾時並不表示工作沒有啟動。很有可能工作已提交並啟動,但 gearmand 伺服器無法將該資訊傳回給您。
(PECL gearman >= 0.6.0)
GearmanClient::setTimeout — 設定 Socket I/O 活動逾時
逾時
以毫秒為單位的時間間隔。
總是回傳 true
。
如果使用此方法設定逾時,且發生逾時,呼叫 ->returnCode() 將會回傳 GEARMAN_TIMEOUT。
請注意,例如 doBackground() 呼叫的逾時並不表示工作沒有啟動。很有可能工作已提交並啟動,但 gearmand 伺服器無法將該資訊傳回給您。
GearmanClient 的預設逾時為 -1,您需要使用 setTimeout 將其設定為正數,以避免即使根本沒有 worker 正在執行,您的腳本也會永遠等待執行工作的情況。
請注意,當您將回呼與 addTask() 和 addTaskBackground() 方法一起使用時,大多會觸發 GEARMAN_TIMEOUT。如果 Gearman 伺服器在大量工作的情況下無法回應目前工作的狀態,用戶端肯定會拋出 GEARMAN_TIMEOUT 錯誤。
避免此錯誤最安全的方法是使用 doBackground() 方法,尤其是在您不希望查找工作狀態(失敗或完成)時,而當您向伺服器發送大量工作時,這應該是一項規則。