Aller au contenu

Le média des artisans du web mercredi 7 octobre 2026

Back-end

Laravel 13.35.0 encadre la mémoire des files d’attente et verrouille le scheduler sur un seul serveur

Laravel 13.35.0, publiée le 6 octobre 2026, permet de plafonner la mémoire des workers de file d'attente en pourcentage et garantit l'exécution unique des tâches planifiées sur une flotte multi-serveurs. La version corrige aussi plusieurs comportements erratiques d'Eloquent et du téléchargement de…

Laravel 13.35.0 est sortie le 6 octobre 2026. Elle introduit un plafond mémoire des workers de file d’attente paramétrable en pourcentage de la machine plutôt qu’en valeur fixe, ainsi qu’une méthode native pour garantir qu’une tâche planifiée ne s’exécute que sur un seul serveur d’une flotte. La livraison corrige également plusieurs comportements erratiques des relations Eloquent et de la gestion des fichiers.

Un plafond mémoire relatif plutôt qu’une valeur figée

Jusqu’ici, queue:work --memory acceptait uniquement une valeur absolue en mégaoctets. Sur une flotte de workers déployée sur des machines de tailles différentes, ce chiffre fixe obligeait à l’ajuster manuellement pour chaque cible, ou à sous-dimensionner par prudence. Laravel 13.35.0 accepte désormais un pourcentage, calculé sur la mémoire totale disponible du conteneur ou de la machine hôte. Le worker se redémarre proprement dès qu’il franchit ce seuil relatif, évitant les redémarrages trop fréquents sur les petites instances comme les dérives mémoire silencieuses sur les plus grosses.

Scheduler : une seule exécution garantie sur plusieurs serveurs

La nouvelle méthode Schedule::alwaysOnOneServer() s’applique à l’ensemble des tâches planifiées d’une application, sans avoir à répéter onOneServer() sur chaque entrée individuellement. Pour les équipes qui déploient la même codebase sur plusieurs serveurs applicatifs derrière un load balancer, c’est le réglage qui évite qu’une tâche cron ne se déclenche deux fois à la même minute. La commande schedule:list --json expose désormais un champ onOneServer par tâche, ce qui permet d’auditer la configuration sans relire le code source.

Correctifs notables : Eloquent, téléchargements et pagination

Au-delà des deux nouveautés principales, la version corrige des bugs remontés par la communauté : un comportement incorrect des relations HasOneThrough, HasManyThrough et morphTo dans certains scénarios de chargement imbriqué, et une régression sur les mises à jour de chemins JSON dans les collections chiffrées. Le téléchargement de fichiers dont le nom contient des caractères non-ASCII est également corrigé, tout comme un défaut d’union de requêtes combinée à la pagination par curseur.

ChangementAvant 13.35.0Depuis 13.35.0
Mémoire des workersValeur fixe en Mo, à ajuster par machinePourcentage de la mémoire disponible
Exécution unique du scheduleronOneServer() à répéter sur chaque tâcheSchedule::alwaysOnOneServer() global
Audit du schedulerLecture du code source nécessaireschedule:list --json expose onOneServer
Stockage de fichierscopyToDisk()/moveToDisk() sans support enumSupport des enums PHP natifs

Côté stockage, copyToDisk() et moveToDisk() acceptent désormais des enums PHP natifs, et une nouvelle option lazy_root_creation évite de créer un répertoire racine tant qu’aucun fichier n’y est écrit. Ces ajustements s’ajoutent à l’écosystème d’outils en ligne de commande que les équipes backend combinent au quotidien, qu’il s’agisse d’Artisan ou de l’un des outils CLI de développement web passés en revue sur Mail Studio.

Point de vigilance. Le seuil se calcule sur la mémoire totale rapportée par le système, pas sur celle allouée au conteneur si celui-ci tourne sans cgroup correctement configuré. Sur une infrastructure où les limites de conteneurs ne sont pas exposées au noyau, le pourcentage peut rester calé sur la mémoire de l’hôte physique : mieux vaut vérifier ce que free -m renvoie depuis l’intérieur du conteneur avant de migrer la configuration.

// config/queue.php ou directement en ligne de commande
// Ancien réglage : valeur fixe, à dupliquer par environnement
// php artisan queue:work --memory=512

// Nouveau réglage : pourcentage de la mémoire disponible
php artisan queue:work --memory=75%

// Scheduler : une seule exécution sur toute la flotte
use Illuminate\Support\Facades\Schedule;

Schedule::alwaysOnOneServer();

Schedule::command('reports:generate')->dailyAt('03:00');
Schedule::command('cache:prune-stale-tags')->hourly();

Avec cette version, Laravel transforme une limite mémoire fixe en budget relatif à la machine, un détail technique mineur qui évite pourtant des redémarrages intempestifs de workers en production.

Le passage à ces nouvelles options ne casse aucune signature existante : les applications qui continuent à passer une valeur absolue à --memory conservent le même comportement qu’auparavant. La migration reste donc purement optionnelle, dans la continuité de la politique de compatibilité déjà observée sur Node.js dans l’écosystème backend concurrent.

Ce qu’il faut retenir

Laravel 13.35.0 corrige deux irritants opérationnels concrets pour les équipes qui exploitent des files d’attente et des tâches planifiées en production multi-serveurs : la mémoire des workers s’exprime enfin en proportion de la machine, et l’exécution unique des tâches planifiées devient un réglage global plutôt qu’une discipline à appliquer tâche par tâche. Les 56 pull requests fusionnées pour cette version, portées par 28 contributeurs, relèvent pour l’essentiel de correctifs ciblés plutôt que de nouvelles fonctionnalités.

Sur les projets que je maintiens en production, le réglage fixe de --memory a toujours été un faux ami : il fallait soit le recalculer à chaque changement d’instance, soit le fixer très bas par prudence et perdre en efficacité. Le pourcentage est une solution simple à un problème que la communauté Laravel remonte depuis plusieurs années, et c’est le genre de changement discret qui en dit plus sur la maturité d’un framework que les fonctionnalités vitrine. — Simon Janvier

Pour aller plus loin : notes de version complètes de Laravel 13.35.0 sur GitHub.

Partager LinkedIn Bluesky Hacker News E-mail

À lire aussi