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