Что нужно сделать, так это отправить и отправить по электронной почте в указанное время (от пользователя) , поэтому мой подход состоял в том, чтобы рассчитать разницу во времени, а затем сделать так, чтобы время задержки на очередь.Задержка в очереди, отправив электронное письмо в определенное время
но мне кажется, что это не работает, как я ожидал все электронные письма доставляются вместе, а не в нужное время
Контроллер
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}', '[email protected]');
.env
QUEUE_DRIVER="database"
им с помощью Laravel 5.3 так что контроллер notifyme
реализует контракт ShouldQueue.
теперь, когда я бегу php artisan queue:work
или php artisan queue:listen
и проверить это электронная почта отправка задерживается, но когда я сделать это снова, (в то время как первая работа по-прежнему задерживается) оба письма присылают вместе сразу или через некоторое время (не на right time $ add)
Любая идея, что здесь не так? есть ли лучший подход? как использовать расписание? или что?
Какое обслуживание вы используете для задержки, есть сообщение на laravel, что «Примечание: у службы Amazon SQS максимальное время задержки составляет 15 минут». –
im using local envirment –
это не о среде, это о том, какой драйвер вы используете. Вы найдете это на config/queue.php –