如果使用此方法设置了超时时间,并且发生了超时,则调用 ->returnCode() 将返回 GEARMAN_TIMEOUT
请注意,例如 doBackground() 调用的超时并不意味着作业未启动。作业很可能已提交并启动,但 gearmand 服务器无法将该信息传回给您。
(PECL gearman >= 0.6.0)
GearmanClient::setTimeout — 设置套接字 I/O 活动超时
timeout
以毫秒为单位的时间间隔
始终返回 true
。
如果使用此方法设置了超时时间,并且发生了超时,则调用 ->returnCode() 将返回 GEARMAN_TIMEOUT
请注意,例如 doBackground() 调用的超时并不意味着作业未启动。作业很可能已提交并启动,但 gearmand 服务器无法将该信息传回给您。
GearmanClient 的默认超时时间为 -1,您需要使用 setTimeout 将其设置为正数,以避免脚本无限期等待运行作业的情况,即使根本没有运行的 worker。
请注意,GEARMAN_TIMEOUT 主要是当您使用 addTask() 和 addTaskBackground() 方法的回调时触发的。如果 Gearman 服务器在大量作业的情况下无法及时响应当前作业的状态,客户端肯定会抛出 GEARMAN_TIMEOUT 错误。
最安全的避免此错误的方法是使用 doBackground() 方法,尤其是在您不关心作业状态(失败或完成)的情况下,这应该是向服务器发送大量作业时的规则。