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

时间:2019-03-14 10:15:12

标签: php laravel php-carbon

我将laravel时区设置为“格林尼治标准时间”前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)));

2 个答案:

答案 0 :(得分:0)

已修复

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

答案 1 :(得分:0)

您可以使用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);
}