Pheanstalk触摸工作要求更多时间

时间:2015-03-06 17:00:42

标签: php queue beanstalkd pheanstalk

如何让我的员工要求更多时间从事这项工作?

我正在使用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函数时,结果是一个私有对象数组。我想要的是让脚本等到执行完成但可能需要很长时间。

1 个答案:

答案 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分钟。