Was zu erreichen ist zu senden und E-Mail, zu einer gewählten Zeit (durch den Benutzer) so war mein Ansatz, um den Zeitunterschied zu berechnen dann, dass die Verzögerungszeit auf ein Warteschlange.Warteschlange Verzögerung, Senden einer E-Mail zu einer bestimmten Zeit
aber es scheint, es nicht funktioniert, wie ich alle E-Mails erwarten zusammenkommen und nicht zur rechten Zeit
-Controller geliefert
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
Route::get('notifyme/{add}', '[email protected]');
.env
QUEUE_DRIVER="database"
im Laravel mit 5.3, so dass die notifyme
Controller implementiert den ShouldQueue Vertrag.
jetzt, wenn ich laufen php artisan queue:work
oder php artisan queue:listen
und testen Sie diese die E-Mail verzögert wird geschickt, aber wenn ich es wieder tun, (während der erste Job noch verzögert wird) beide E-Mails erhalten zusammen sofort oder nach einiger Zeit (nicht an die gesendet richtige Zeit $ add)
Irgendeine Idee, was hier falsch ist? gibt es einen besseren Ansatz? wie mit einem Zeitplan? oder was?
Welchen Dienst Sie für Verzögerung verwenden, gibt es eine Nachricht auf Laravel, dass "Hinweis: Der Amazon SQS-Dienst hat eine maximale Verzögerungszeit von 15 Minuten." –
ich verwende lokale Umgebung –
es geht nicht um Umgebung, es ist über welchen Treiber Sie verwenden. Sie finden dies auf Config/queue.php –