[英]Laravel delay queue job dispatch after x hour minutes second
I have set my laravel timezone to 'Asia/Kolkata' which is 5:30 hrs ahead of GMT.我已将 Laravel 时区设置为“亚洲/加尔各答”,比格林威治标准时间早 5:30。 When i am dispatching job, job is starting after 5:30 hours dispatching which should as all customers are from same timezone.
当我调度工作时,工作在 5:30 小时后开始调度,因为所有客户都来自同一时区。 Also, it is showing available at 5:30 hrs ahead.
此外,它会在 5:30 之前显示可用。 Like when i am setting it to start at 4:30 when current time is 3:30, job delay is taking 5:30 hrs ahead and starting at 10:00.
就像我将其设置为在当前时间为 3:30 时的 4:30 开始时一样,作业延迟需要提前 5:30 小时并从 10:00 开始。
I have tried setting Linux,laravel timezone, php artisan config:cache, still it is taking 5:30 hrs ahead.我试过设置 Linux、laravel 时区、php artisan config:cache,仍然需要提前 5:30 小时。
My code:我的代码:
$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)));
You can use Carbon instance to get specific date.您可以使用 Carbon 实例来获取特定日期。 Complete example regarding to Laravel v6.x.
关于 Laravel v6.x 的完整示例。 Should be work on old versions too:
也应该适用于旧版本:
public function store() {
// some stuff
// after 10 minutes
$on = \Carbon\Carbon::now()->addMinutes(10);
dispatch(new \App\Jobs\SomeJob(...$someVariables))->delay($on);
}
fixed it修复
$job_id = $this->dispatch(($job)
->onQueue('splitter')->delay($diff);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.