Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 第二次和第三次重试的Beanstalkd自定义任务延迟_Php_Queue_Beanstalkd - Fatal编程技术网

Php 第二次和第三次重试的Beanstalkd自定义任务延迟

Php 第二次和第三次重试的Beanstalkd自定义任务延迟,php,queue,beanstalkd,Php,Queue,Beanstalkd,我使用Beanstalkd(带-)进行队列。但我需要为下次重试设置自定义延迟 第一-毫不拖延 2号-一小时后 第3次-24小时内 可以用Beanstalkd实现吗 public function actionCron($job) { $sentData = $job->getData(); try { // I need to setup custom delay there // 1 hour after 1st retry

我使用Beanstalkd(带-)进行队列。但我需要为下次重试设置自定义延迟

第一-毫不拖延 2号-一小时后 第3次-24小时内

可以用Beanstalkd实现吗

public function actionCron($job)
{
    $sentData = $job->getData();
    try {

        // I need to setup custom delay there
        // 1 hour after 1st retry
        // 24 hrs after 2nd retry

        return self::DELAY;

    } catch (\Exception $e) {
        //If there is anything to do.
        fwrite(STDERR, Console::ansiFormat($e . "\n", [Console::FG_RED]));

        // you can also bury jobs to examine later
        return self::BURY;
    }
}

这是很有可能的-通过向Beanstalkd服务器询问有关作业的统计信息

从Beanstalk文件:

stats作业\r\n
返回的数据包括先前保留、释放作业的次数,以及管名称等。您可以根据需要使用最合适的数据对其重新排队

由于您无法更改数据以延迟它,因此只能创建一个新作业,一个选项是将其放入新队列中进行第二次或第三次尝试,并具有适当的初始延迟,然后如果作业来自重试队列(在第一次或第二次尝试之后),请在再次运行之前更改初始延迟

由于您可以尝试从多个队列获取作业,因此您只需让代码监视主队列,以及第二次/第三次尝试管道,并查看它们给出了什么,并根据需要进行处理

stats-job <id>\r\n