如何让我的员工要求更多时间从事这项工作?
我正在使用pheanstalk库。 工作是解析文件,根据文件可能需要超过60秒,默认ttr。
while( $job = $pheanstalk->watch($tubeName)->reserve() ){
// get the job body
$parserExec = unserialize( $job->getData() );
// execute parser - will take more than 1 min most of the time
exec( $parserExec['command'] );
// rest of the stuff - delete job etc
}
我是新手排队的东西,我一直在浏览我在网上找到的例子。如果我这样做错了,请告诉我。我试图获得jobstats并根据时间剩余的值写一个条件,但我无法让它工作。当我在pheanstalk中使用jobStats函数时,结果是一个私有对象数组。我想要的是让脚本等到执行完成但可能需要很长时间。
答案 0 :(得分:3)
您有两种方法可以延长工作时间。第一个选项是在将作业插入队列时设置您自己的TTR值。默认值为1分钟,但您可以将其设置为您需要的任何值。这可能是你最好的选择。假设你使用pheanstalk来创建你可以做的工作
$pheanstalk->putInTube(tube, data, priority, delay, ttr)
or
$pheanstalk->put(data, priority, delay, ttr);
您可以拨打$pheanstalk->touch($job)
来重置TTR上的倒计时,但您仍然会被限制为设定的TTR值,在您的情况下为1分钟。