想要实现的是在选定的时间(由用户)发送和发送电子邮件,所以我的方法是计算时间差,然后在队列中计算延迟时间。
但它似乎不起作用,因为我希望所有电子邮件都一起发送而不是在正确的时间发送
控制器
public function notifyme($add)
{
$created = Carbon::now()->addMinutes($add);
$now = Carbon::now();
$days = 1440*$created->diff($now)->days;
$hours = 60*$created->diff($now)->h;
$minutes = $days + $hours + $created->diff($now)->i;
$user = Auth::user();
$user->notify((new notifyme($user))->delay($minutes));
return redirect('/notif');
}
路线
Route::get('notifyme/{add}', 'HomeController@notifyme');
.env
QUEUE_DRIVER="database"
我使用 laravel 5.3,所以notifyme
控制器实现了 ShouldQueue 合同。
现在,当我运行php artisan queue:work
或php artisan queue:listen
测试时,电子邮件发送被延迟,但是当我再次发送时,(虽然第一份工作仍然延迟)两封电子邮件立即或一段时间后一起发送(不是在正确的时间 $add)
知道这里有什么问题吗?有更好的方法吗?喜欢使用时间表?或者是什么?