PHP 8.1

PHP 8.1 Fibers – brauch ich das eigentlich?

Als PHP 8.1 Fibers angekündigt hat, war ich skeptisch. Nebenläufigkeit in PHP – wozu? PHP ist synchron, das ist sein Modell, das funktioniert. Warum jetzt Coroutines?

Nach einer Woche Experimentieren ist meine Meinung: für die meisten PHP-Projekte braucht man Fibers nicht. Aber für spezifische Anwendungsfälle sind sie tatsächlich elegant.

Was Fibers sind

Fibers sind leichtgewichtige kooperative Multitasking-Einheiten. Kein echtes Threading – PHP bleibt single-threaded. Aber man kann eine Fiber pausieren (Fiber::suspend()) und später fortsetzen ($fiber->resume()). Das erlaubt es lang-laufende Operationen aufzuteilen ohne den gesamten Prozess zu blockieren.

$fiber = new Fiber(function(): void { $wert = Fiber::suspend('erster Wert'); echo "Fiber fortgesetzt mit: " . $wert . PHP_EOL; }); $erstesErgebnis = $fiber->start(); echo $erstesErgebnis . PHP_EOL; // "erster Wert" $fiber->resume('Hallo von außen');

Wann Fibers Sinn machen

In Kombination mit Event-Loop-Bibliotheken wie ReactPHP oder Swoole, wenn man viele gleichzeitige I/O-Operationen hat – Datenbankabfragen, HTTP-Requests, File-Reads – die unabhängig voneinander sind. Statt sequentiell zu warten kann man zwischen ihnen wechseln.

Für Standard-Webanwendungen mit Request-Response-Zyklus: nicht nötig. Für lang-laufende Prozesse, Worker, oder Systeme mit hoher Parallelität: einen Blick wert. In allen anderen Fällen: nimm einen Job-Queue und gut ist.


← zurück zu PHP   📂 Archiv