Asynchrone Programmierung in PHP: Vollständiger Leitfaden für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in die asynchrone Programmierung in PHP



Traditionell arbeitet PHP im synchronen Modus: Jede Anfrage wird sequenziell, Zeile für Zeile, ausgeführt. In der modernen Webentwicklung wird jedoch zunehmend die gleichzeitige Verarbeitung mehrerer Aufgaben benötigt – vom Versenden von E-Mails bis zur Arbeit mit WebSocket und APIs. Asynchrone Programmierung in PHP ermöglicht es, diese Aufgaben effizient zu lösen, ohne den Hauptausführungsfluss zu blockieren.



In diesem Leitfaden werden wir behandeln, was Asynchronität ist, warum sie benötigt wird und wie man sie in PHP einsetzt. Sie erfahren mehr über die wichtigsten Werkzeuge: Fiber, ReactPHP, Swoole und die integrierten Funktionen für die Arbeit mit Coroutinen.



Was ist asynchrone Programmierung und warum wird sie benötigt?



Synchroner vs. Asynchroner Code



Stellen Sie sich vor, Sie bestellen eine Pizza. Der synchrone Ansatz: Sie rufen an, warten, bis sie zubereitet ist, und legen dann erst auf. Asynchron: Sie rufen an, geben die Bestellung auf, und während die Pizza zubereitet wird, erledigen Sie Ihre eigenen Dinge. In PHP sieht das so aus:



// Synchroner Code (blockierend)$data = file_get_contents('https://api.example.com');echo "Daten empfangen: " . $data; // Warten, bis geladen

// Asynchroner Code (nicht blockierend)$promise = async_file_get_contents('https://api.example.com');echo "Anfrage gesendet, andere Dinge können erledigt werden...";$data = await($promise); // Ergebnis später abrufen


Probleme des synchronen PHP



  • I/O-Blockierung: Operationen mit Dateien, Datenbanken oder Netzwerkanfragen stoppen die Skriptausführung
  • Geringe Leistung: Jede neue Anfrage erfordert einen separaten Prozess oder Thread
  • Probleme mit Echtzeit: Chats, Benachrichtigungen und Streaming arbeiten ineffizient


Vorteile des asynchronen Ansatzes



  • Gleichzeitige Verarbeitung von Hunderten und Tausenden von Verbindungen
  • Einsparung von Speicher und Serverressourcen
  • Möglichkeit zur Erstellung von Echtzeitanwendungen
  • Reaktionsfähigere Benutzeroberflächen


Die wichtigsten Werkzeuge für asynchrones PHP



1. Coroutinen und Fiber (PHP 8.1+)



Seit PHP 8.1 gibt es integrierte Unterstützung für Fiber – leichtgewichtige Coroutinen. Fiber ermöglicht es, die Ausführung einer Funktion anzuhalten und später fortzusetzen, ohne den Hauptthread zu blockieren.



<?php$fiber = new Fiber(function(): void {    $value = Fiber::suspend('first');    echo "Fortgesetzt mit Wert: $value";});

$value = $fiber->start();echo "Startwert: $value"; // first$fiber->resume('second'); // Fortgesetzt mit Wert: second?>


2. ReactPHP – Event Loop für PHP



ReactPHP ist eine Bibliothek, die ereignisorientierte Programmierung (event loop) implementiert. Sie ermöglicht nicht blockierende Ein-/Ausgabeoperationen.



<?phprequire 'vendor/autoload.php';

$loop = React\\EventLoop\\Loop::get();

$loop->addTimer(1.0, function () { echo "1 Sekunde vergangen";});

$loop->addTimer(2.0, function () { echo "2 Sekunden vergangen";});

echo "Start...";$loop->run();?>


ReactPHP bietet auch asynchrone HTTP-Clients und Server:



<?php$browser = new React\\Http\\Browser($loop);

$browser->get('https://api.example.com')->then( function (Psr\\Http\\Message\\ResponseInterface $response) { echo "Antwort: " . $response->getBody(); }, function (Exception $e) { echo "Fehler: " . $e->getMessage(); });?>


3. Swoole – Hochleistungs-Async-Server



Swoole ist eine PHP-Erweiterung, die PHP in einen vollwertigen asynchronen Server verwandelt. Es unterstützt Coroutinen, WebSocket, TCP/UDP-Server und vieles mehr.



<?ph                

Blogs

Buchempfehlungen