Programmation asynchrone en PHP : guide complet pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à la programmation asynchrone en PHP



Traditionnellement, PHP fonctionne en mode synchrone : chaque requête est exécutée séquentiellement, ligne par ligne. Cependant, dans le développement web moderne, il est de plus en plus nécessaire de traiter plusieurs tâches simultanément — de l'envoi d'e-mails au travail avec WebSocket et les API. La programmation asynchrone en PHP permet de résoudre ces tâches efficacement, sans bloquer le flux d'exécution principal.



Dans ce guide, nous allons voir ce qu'est l'asynchrone, pourquoi elle est nécessaire et comment commencer à l'utiliser en PHP. Vous découvrirez les outils clés : Fiber, ReactPHP, Swoole et les fonctions intégrées pour travailler avec les coroutines.



Qu'est-ce que la programmation asynchrone et pourquoi en a-t-on besoin ?



Code synchrone vs asynchrone



Imaginez que vous commandez une pizza. Approche synchrone : vous appelez, attendez qu'elle soit préparée, puis raccrochez. Approche asynchrone : vous appelez, passez commande, et pendant que la pizza est préparée — vous vaquez à vos occupations. En PHP, cela ressemble à ceci :



// Code synchrone (bloquant)$data = file_get_contents('https://api.example.com');echo "Données reçues : " . $data; // On attend le chargement

// Code asynchrone (non bloquant)$promise = async_file_get_contents('https://api.example.com');echo "Requête envoyée, on peut faire autre chose...";$data = await($promise); // On obtient le résultat plus tard


Problèmes du PHP synchrone



  • Blocage I/O : les opérations avec les fichiers, les bases de données ou les requêtes réseau arrêtent l'exécution du script
  • Faible performance : chaque nouvelle requête nécessite un processus ou un thread séparé
  • Problèmes en temps réel : les chats, notifications et streaming fonctionnent inefficacement


Avantages de l'approche asynchrone



  • Traitement simultané de centaines et de milliers de connexions
  • Économie de mémoire et de ressources serveur
  • Possibilité de créer des applications en temps réel
  • Interfaces plus réactives


Outils principaux du PHP asynchrone



1. Coroutines et Fiber (PHP 8.1+)



Depuis PHP 8.1, une prise en charge intégrée de Fiber est apparue — des coroutines légères. Fiber permet de suspendre l'exécution d'une fonction et de la reprendre plus tard, sans bloquer le flux principal.



<?php$fiber = new Fiber(function(): void {    $value = Fiber::suspend('first');    echo "Repris avec la valeur : $value";});

$value = $fiber->start();echo "Valeur initiale : $value"; // first$fiber->resume('second'); // Repris avec la valeur : second?>


2. ReactPHP — Event Loop pour PHP



ReactPHP est une bibliothèque qui implémente la programmation orientée événements (event loop). Elle permet d'effectuer des opérations d'entrée-sortie non bloquantes.



<?phprequire 'vendor/autoload.php';

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

$loop->addTimer(1.0, function () { echo "1 seconde s'est écoulée";});

$loop->addTimer(2.0, function () { echo "2 secondes se sont écoulées";});

echo "Départ...";$loop->run();?>


ReactPHP fournit également des clients et serveurs HTTP asynchrones :



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

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


3. Swoole — serveur asynchrone haute performance



Swoole est une extension pour PHP qui le transforme en un serveur asynchrone complet. Elle prend en charge les coroutines, WebSocket, les serveurs TCP/UDP et bien plus encore.



<?ph                

Blogs

Book Recommendations