Fibers: Kooperative Nebenläufigkeit
Pausieren und setzen Sie die PHP-Ausführung mit Fibers für asynchrone Muster fort.
Fibers: Kooperative Nebenläufigkeit ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was sind Fibers?
PHP 8.1 führte Fibers ein – leichtgewichtige Coroutinen, die die Ausführung an einer bestimmten Stelle anhalten und später fortsetzen können. Dadurch wird kooperatives Multitasking ermöglicht.
Fiber im Vergleich zu Async
Fibers sind keine parallelen Threads – PHP ist weiterhin single-threaded. Fibers ermöglichen es einem Ausführungskontext, die Kontrolle freiwillig an einen anderen abzugeben, und unterstützen dadurch asynchrone Muster.
Einen Fiber erstellen
Erstellen Sie einen Fiber, indem Sie dem Konstruktor ein Callable übergeben. Der Fiber startet erst, wenn Sie start() aufrufen.
<?php
$fiber = new Fiber(function (): void {
echo "Fiber started\n";
$value = Fiber::suspend("first suspension");
echo "Resumed with: $value\n";
});
Starten und Pausieren
start() führt den Fiber bis zum ersten Fiber::suspend() aus. Der an suspend() übergebene Wert wird von start() zurückgegeben.
<?php
$suspended = $fiber->start(); // runs until suspend()
echo $suspended; // "first suspension"
Einen Fiber fortsetzen
resume($value) setzt den Fiber an der Stelle fort, an der er pausiert wurde. Der an resume() übergebene Wert wird von Fiber::suspend() innerhalb des Fibers zurückgegeben.
<?php
$fiber->resume("hello from main");
// Inside fiber: $value = "hello from main"
// Prints: "Resumed with: hello from main"Vollständiges Fiber-Beispiel
Der vollständige Lebenszyklus eines Fibers: erstellen, starten, pausieren, fortsetzen, beenden.
<?php
$fiber = new Fiber(function (): string {
$x = Fiber::suspend("paused");
return "Fiber done, received: $x";
});
$msg = $fiber->start(); // "paused"
$fiber->resume("hi!");
echo $fiber->getReturn(); // "Fiber done, received: hi!"Methoden zum Ermitteln des Fiber-Status
Überprüfen Sie den Zustand eines Fibers: isStarted(), isSuspended(), isRunning(), isTerminated().
<?php
var_dump($fiber->isTerminated()); // true after getReturn()Fehlerbehandlung in Fibers
Werfen Sie mit $fiber->throw(new Exception(...)) eine Exception in einen Fiber. Die Exception tritt innerhalb des Fibers an der Stelle von Fiber::suspend() auf.
Integration in einen Event Loop
Fibers sind dafür ausgelegt, Event Loops (ReactPHP, Revolt) zu unterstützen. Dort pausieren I/O-Callbacks während des Wartens und werden fortgesetzt, sobald Daten eintreffen.
Fibers vs. Generators
Generators (PHP 5.5+) können mit yield ebenfalls pausieren, werden aber hauptsächlich für verzögerte Iteration verwendet. Fibers sind ein allgemeinerer Coroutine-Mechanismus mit bidirektionaler Werteübergabe und Rückgabewerten.
Praktische Anwendungsfälle
Fibers ermöglichen nicht blockierende HTTP-Clients in Revolt, asynchrone Datenbankabfragen, kooperative Task-Scheduler und Streaming-Datenpipelines ohne die Komplexität von Multithreading.
Zusammenfassung
Mit Fibers kann ein PHP-Ausführungskontext pausiert und fortgesetzt werden, wodurch kooperative Nebenläufigkeit ermöglicht wird. Sie bilden die Grundlage moderner asynchroner PHP-Frameworks. Fiber::suspend() gibt die Kontrolle ab, resume() stellt sie wieder her.
Schnelltest
Wie übergeben Sie einen Wert an einen pausierten Fiber?
Häufig gestellte Fragen
Ist die Lektion „Fibers: Kooperative Nebenläufigkeit“ kostenlos?
Ja — der vollständige Text von „Fibers: Kooperative Nebenläufigkeit“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Fibers: Kooperative Nebenläufigkeit“?
Pausieren und setzen Sie die PHP-Ausführung mit Fibers für asynchrone Muster fort. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Fibers: Kooperative Nebenläufigkeit“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Match-Ausdruck und benannte Argumente
- Nullsafe-Operator und Union-Typen
- Enumerationen (Enums)
- Fibers: Kooperative Nebenläufigkeit