Die am 13. Oktober veröffentlichte Version 13.36.0 von Laravel bündelt rund fünfzig
Änderungen rund um Queues, Storage und Eloquent. Keine der Änderungen bricht die
Abwärtskompatibilität, aber mehrere Korrekturen betreffen Verhalten, das Teams seit Monaten in
Produktion beobachten, insbesondere Queue-Worker, die ohne verwertbaren Exit-Code hängen
blieben.
Vorhersehbarere Queue-Worker
Die am meisten erwartete Korrektur betrifft den Exit-Code von Workern, die ihr Zeitlimit
erreichen: Er wurde bisher stillschweigend verschluckt, sodass Supervisor oder systemd einen
hängenden Worker weder erkennen noch neu starten konnten. Worker können nun außerdem ihre
persistenten Verbindungen zwischen zwei Jobs leeren, statt sie bis zum Prozessende offen zu
halten, was Verbindungslecks bei Queues mit hohem Durchsatz begrenzt.
S3-Storage und benannte Credential-Provider
Der S3-Treiber unterstützt jetzt mehrere benannte Credential-Provider innerhalb desselben
Projekts, nützlich für Anwendungen, die in mehrere Konten oder Regionen schreiben, sowie Cloud-
IAM-Disks für Umgebungen, in denen die Schlüsselrotation außerhalb des Codes verwaltet wird.
Diese Änderung reiht sich in einen langfristigen Trend des Frameworks ein: die
Secrets-Verwaltung zunehmend an die Infrastruktur statt an die .env-Datei zu
delegieren.
Eloquent: punktuelle, aber zahlreiche Korrekturen
Die strukturellste Korrektur betrifft die Auflösung von morph map-Aliassen in
constrain(), morphWith() und loadMorph(): Deklarierte
Aliasse wurden nicht immer respektiert, was manche Projekte dazu zwang, als Workaround den
vollständigen Klassennamen zu verwenden. touch() funktioniert jetzt korrekt bei
HasOneOrManyThrough-Beziehungen, und Schema::getColumn() wird
groß-/kleinschreibungsunabhängig, was falsch-negative Ergebnisse bei bestimmten
Datenbank-Engines vermeidet.
| Bereich | Vor 13.36.0 | Seit 13.36.0 |
|---|---|---|
| Hängende Worker | Exit-Code verschluckt, unentdeckt | Exit-Code für Orchestrator nutzbar |
| Persistente Verbindungen | Bis zum Stoppen des Workers gehalten | Zwischen Jobs geleert |
| S3-Credentials | Ein einziger Standard-Provider | Mehrere benannte Provider + IAM-Disks |
| Redis-Cluster | phpredis-Client hängt ohne erreichbaren Knoten | Client wird automatisch neu aufgebaut |
| Tests (Prompts) | Speicherleck bei langen Suiten | Leck behoben |
Redis, Benachrichtigungen und ein Speicherleck in Tests
Bei Redis wird der phpredis-Client jetzt automatisch neu aufgebaut, wenn kein Cluster-Knoten
erreichbar ist, statt hängen zu bleiben. Bei Benachrichtigungen wird ein Fehler behoben, bei dem
Notification::locale() auf eine nachfolgende, nicht zusammenhängende Benachrichtigung
übergreifen konnte. Schließlich betraf ein durch die Prompts-Komponente verursachtes Speicherleck
lange Testsuiten, ein Problem, das manche Teams durch das Aufteilen ihrer CI-Pipelines umgingen —
ein Workaround, der nun nicht mehr nötig ist.
// config/queue.php — neu in 13.36: Hintergrundverbindung standardmäßig
'connections' => [
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
'block_for' => null,
'after_commit' => false,
],
],
Der Exit-Code von Queue-Workern, lange unsichtbar für Monitoring-Werkzeuge, wird endlich für Orchestratoren nutzbar.
Die Eloquent-Korrekturen an morph map-Aliassen verdienen eine manuelle Prüfung bei
Projekten, die enforceMorphMap() verwenden: Das Verhalten ändert sich, auch wenn es
sich an das annähert, was die Dokumentation bereits beschrieb.
Im strengen Sinne der Versionierung bleibt das Update minor, aber der Umfang der Korrekturen —
rund fünfzig in einem Monat zusammengeführte Pull Requests — zeigt ein Veröffentlichungstempo, das
Teams, die ihre Updates über Kommandozeilen-Tools automatisieren, besser eng verfolgen als sich
aufstauen lassen sollten.
Das Wichtigste in Kürze
Laravel 13.36.0 ändert nichts an der öffentlichen API des Frameworks, schließt aber reale
betriebliche blinde Flecken: Worker-Überwachung, Rotation von S3-Credentials und Stabilität des
Redis-Clients im Cluster. Projekte mit Queues hohen Volumens sollten zügig aktualisieren, andere
können ohne Dringlichkeit bis zum nächsten Wartungsfenster warten.
Bei den Projekten, in denen ich Laravel-Queues in Produktion betreue, war der verschluckte
Exit-Code hängender Worker seit Monaten eine Quelle stiller Vorfälle: Der Worker stürzte ab,
Supervisor startete ihn nicht neu, und nur ein Latenz-Alarm machte das Problem sichtbar. Allein
diese Korrektur rechtfertigt das Update. — Simon Janvier
Zum Weiterlesen: Die vollständigen Release-Notes stehen im
GitHub-Repository des Frameworks.
