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.
| Changement | Avant 13.35.0 | Depuis 13.35.0 |
|---|---|---|
| Mémoire des workers | Valeur fixe en Mo, à ajuster par machine | Pourcentage de la mémoire disponible |
| Exécution unique du scheduler | onOneServer() à répéter sur chaque tâche | Schedule::alwaysOnOneServer() global |
| Audit du scheduler | Lecture du code source nécessaire | schedule:list --json expose onOneServer |
| Stockage de fichiers | copyToDisk()/moveToDisk() sans support enum | Support 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.
