Laravel 在 x 小时分钟后延迟队列作业调度

Laravel delay queue job dispatch after x hour minutes second

我已将 laravel 时区设置为 'Asia/Kolkata',比格林威治标准时间早 5:30 小时。 当我派遣工作时,工作在 5:30 小时派遣后开始,因为所有客户都来自同一时区。此外,它会提前 5:30 小时显示可用。就像我将其设置为在当前时间 3:30 开始于 4:30 时一样,作业延迟提前 5:30 小时并从 10:00 开始。

我已尝试设置 Linux、laravel 时区 php artisan config:cache,但仍然需要 5:30 小时。

我的代码:

$diff = strtotime($start_time) - strtotime($current_datetime);
        $job_delay_hour = date("H", $diff);
        $job_delay_minute = date("i", $diff);
        $job_delay_second = date("s", $diff);

$job_id = $this->dispatch(($job)
            ->onQueue('splitter')
            ->delay(now()->addHour($job_delay_hour)->addMinutes($job_delay_minute)->addSeconds($job_delay_second)));

已修复

$job_id = $this->dispatch(($job)
        ->onQueue('splitter')->delay($diff);

您可以使用 Carbon 实例获取特定日期。关于 Laravel v6.x 的完整示例。也应该适用于旧版本:

public function store() {
    // some stuff

    // after 10 minutes
    $on = \Carbon\Carbon::now()->addMinutes(10);        

    dispatch(new \App\Jobs\SomeJob(...$someVariables))->delay($on);
}