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);
}
我已将 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);
}