← Retour aux Labs

Laravel Queue

Laravel : pourquoi votre page met-elle 5 secondes à répondre ?

Un simple email envoyé au mauvais moment peut ralentir toute l’expérience utilisateur.

User::create($data);

Mail::to($user)->send(
    new WelcomeMail($user)
);

return response()->json([
    'success' => true
]);

Problème

Le SMTP ralentit la requête HTTP

Avec send(), Laravel attend que l’email soit entièrement envoyé avant de répondre au navigateur. Si le serveur SMTP est lent, l’utilisateur attend aussi.

Flux synchrone

Création utilisateur → connexion SMTP → envoi email → réponse SMTP → retour navigateur.

Solution

Placer l’email dans une queue

User::create($data);

Mail::to($user)->queue(
    new WelcomeMail($user)
);

return response()->json([
    'success' => true
]);

Avec queue(), Laravel ajoute l’envoi dans une file d’attente. La réponse HTTP peut revenir rapidement, pendant qu’un worker traite l’email en arrière-plan.

Comparatif

send() ou queue() ?

Méthode
Comportement
Quand l’utiliser
send()
Envoie l’email immédiatement pendant la requête HTTP.
Cas simples, outils internes, prototypes ou scripts ponctuels.
queue()
Place l’envoi dans une file d’attente traitée par un worker.
Emails, notifications, PDF, exports, synchronisations et traitements longs.

La règle simple

Si une action n’a pas besoin d’être terminée avant de répondre à l’utilisateur, elle devrait souvent être exécutée en arrière-plan.

send()

À réserver aux cas simples, prototypes, scripts internes ou contextes où l’attente utilisateur n’est pas un problème.

queue()

À privilégier pour les emails, notifications, PDF, exports CSV, synchronisations API et traitements longs.

Attention

queue() nécessite un worker.

Mettre un email dans une queue ne suffit pas. Il faut aussi un worker Laravel actif pour traiter les jobs. En production, on utilise souvent Redis, Supervisor, Horizon ou un système équivalent.

Besoin d’aide sur Laravel ?

Votre application Laravel ralentit à cause de traitements synchrones ?

J’accompagne les équipes sur Laravel, les queues, Redis, l’architecture backend, les traitements asynchrones et la performance applicative.