PHP 8.5 et les Fibers : optimiser les requêtes asynchrones sans framework

Découvrez comment utiliser les Fibers de PHP 8.5 pour gérer proprement des opérations d'E/S asynchrones et parallèles sans framework lourd.

PHP 8.5 et les Fibers : optimiser les requêtes asynchrones sans framework

Au fil de l'évolution de PHP, l'asynchronisme et la concurrence sont devenus des sujets majeurs pour les applications web à hautes performances. Avec les Fibers, PHP peut suspendre puis reprendre des blocs de code, ce qui facilite la gestion des E/S non bloquantes sans la complexité des callbacks profondément imbriqués.

Que sont les Fibers en PHP et pourquoi les utiliser ?

Les Fibers sont des blocs de code interruptibles disposant de leur propre pile. Elles permettent d'écrire une logique asynchrone avec une syntaxe entièrement séquentielle. Cette approche offre plusieurs avantages :

  • Aucun framework lourd : aucune bibliothèque complexe ni environnement d'exécution tiers n'est nécessaire pour bénéficier d'exécutions concurrentes.
  • Code lisible : les callbacks imbriqués et les promesses complexes sont évités, tout en conservant la clarté du code synchrone.
  • Performances et E/S non bloquantes : elles conviennent aux appels HTTP parallèles, aux requêtes de base de données et aux opérations sur le système de fichiers.

Exemple pratique : appels HTTP et E/S parallèles

Lorsque deux API externes ou deux opérations d'E/S indépendantes doivent être interrogées, les Fibers permettent de les coordonner au lieu de les exécuter séquentiellement en bloquant la requête :

<?php

$fiber1 = new Fiber(function(): void {
    echo "Inizio recupero dati da API A...\n";
    Fiber::suspend('Dati API A in elaborazione');
    echo "Completato recupero dati da API A!\n";
});

$fiber2 = new Fiber(function(): void {
    echo "Inizio recupero dati da API B...\n";
    Fiber::suspend('Dati API B in elaborazione');
    echo "Completato recupero dati da API B!\n";
});

// Avvio delle Fiber
$res1 = $fiber1->start();
$res2 = $fiber2->start();

// Ripresa dell'esecuzione
$fiber1->resume();
$fiber2->resume();

?>

Quand utiliser les Fibers plutôt que l'approche traditionnelle

Les Fibers sont idéales lorsqu'une application doit gérer plusieurs opérations d'E/S bloquantes. Elles ne remplacent pas le multithreading pour les tâches gourmandes en CPU, mais gèrent efficacement les temps d'attente du réseau et du disque.

Conclusion

L'intégration native des Fibers constitue une avancée importante pour le développement PHP moderne. Elle permet de construire des microservices, des robots d'exploration et des clients API rapides et efficaces, tout en restant dans l'écosystème PHP natif.

Sources officielles

Partager

Quelle est votre réaction ?

Aimer Aimer 0
Je n'aime pas Je n'aime pas 0
Amour Amour 0
Drôle Drôle 0
En colère En colère 0
Triste Triste 0
Waouh Waouh 0