laravel 队列的延迟分发delay用法

laravel 队列的延迟分发delay用法

如果让我们指定调度任务在 10 分钟后他被调度后才执行,在这之前它将是无效的,您可以使用以下代码来实现您想要的效果:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Jobs\ProcessPodcast;
use Illuminate\Http\Request;

class PodcastController extends Controller
{
    /**
     * Store a new podcast.
     *
     * @param  Request  $request
     * @return Response
     */
    public function store(Request $request)
    {
        // Create podcast...
        ProcessPodcast::dispatch($podcast)
                ->delay(now()->addMinutes(10));
        //或者直接时间戳形式
        ProcessPodcast::dispatch($podcast)
                ->delay(600);
    }
}

使用Laravel队列的delay()方法来设置任务的延迟时间,以在特定时间执行该任务。具体来说,您可以使用以下代码来实现您想要的效果:

use App\Jobs\ProcessPodcast;
use Carbon\Carbon;

...

// 计算今天14点50的时间
$now = Carbon::now();
$sendTime = Carbon::create($now->year, $now->month, $now->day, 14, 50, 0);

// 如果当前时间已经过了今天14点50,则将任务延迟到明天14点50
if ($now->gt($sendTime)) {
    $sendTime->addDay();
}

// 将任务分发到队列中,并将其延迟到指定的时间
ProcessPodcast::dispatch($podcast)->delay($sendTime);

如果您已经有一个时间戳,并希望在该时间戳的基础上提前15分钟执行任务,可以使用Carbon类中的createFromTimestamp()方法来创建对应的时间对象,并使用subMinutes()方法将该时间对象提前15分钟。以下是一个实现示例:

use App\Jobs\ProcessPodcast;
use Carbon\Carbon;

...

// 假设您已经有一个时间戳 $timestamp
$sendTime = Carbon::createFromTimestamp($timestamp)->subMinutes(15);

// 将任务分发到队列中,并将其延迟到指定的时间
ProcessPodcast::dispatch($podcast)->delay($sendTime);

如果您已经有一个时间戳,并希望在该时间戳的基础上延迟15分钟执行任务,可以使用Carbon类中的createFromTimestamp()方法来创建对应的时间对象,并使用addMinutes()方法将该时间对象延迟15分钟。以下是一个实现示例:

use App\Jobs\ProcessPodcast;
use Carbon\Carbon;

...

// 假设您已经有一个时间戳 $timestamp
$sendTime = Carbon::createFromTimestamp($timestamp)->addMinutes(15);

// 将任务分发到队列中,并将其延迟到指定的时间
ProcessPodcast::dispatch($podcast)->delay($sendTime);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值