Fibers : concurrence coopérative
Mettre en pause et reprendre l’exécution PHP avec Fibers pour créer des mécanismes de type asynchrone.
Fibers : concurrence coopérative est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.
Que sont les fibres ?
PHP 8.1 a introduit les fibres : des coroutines légères capables de suspendre l’exécution à un point précis, puis de la reprendre plus tard, ce qui permet le multitâche coopératif.
Fibres et asynchronisme
Les fibres ne sont pas des fils d’exécution parallèles : PHP reste monofilaire. Elles permettent à un contexte d’exécution de céder volontairement le contrôle à un autre, ce qui rend possibles des modèles similaires à l’asynchronisme.
Créer une fibre
Créez une fibre en transmettant un appelable à son constructeur. La fibre ne démarre pas tant que vous n’avez pas appelé start().
<?php
$fiber = new Fiber(function (): void {
echo "Fiber started\n";
$value = Fiber::suspend("first suspension");
echo "Resumed with: $value\n";
});
Démarrage et suspension
start() exécute la fibre jusqu’au premier Fiber::suspend(). La valeur transmise à suspend() est renvoyée par start().
<?php
$suspended = $fiber->start(); // runs until suspend()
echo $suspended; // "first suspension"
Reprise d’une fibre
resume($value) poursuit la fibre à partir de l’endroit où elle a été suspendue. La valeur transmise à resume() est renvoyée par Fiber::suspend() dans la fibre.
<?php
$fiber->resume("hello from main");
// Inside fiber: $value = "hello from main"
// Prints: "Resumed with: hello from main"Exemple complet de fibre
Cycle de vie complet d’une fibre : création, démarrage, suspension, reprise et fin.
<?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!"Méthodes d’état des fibres
Vérifiez l’état de la fibre avec : isStarted(), isSuspended(), isRunning() et isTerminated().
<?php
var_dump($fiber->isTerminated()); // true after getReturn()Gestion des erreurs dans les fibres
Injectez une exception dans une fibre avec $fiber->throw(new Exception(...)). L’exception apparaît au point Fiber::suspend() dans la fibre.
Intégration à la boucle d’événements
Les fibres sont conçues pour alimenter les boucles d’événements (ReactPHP, Revolt), dans lesquelles les rappels d’E/S se suspendent pendant l’attente, puis reprennent lorsque les données arrivent.
Fibres et générateurs
Les générateurs (PHP 5.5 ou version ultérieure) peuvent également se mettre en pause avec yield, mais ils servent principalement à parcourir des données à la demande. Les fibres constituent un mécanisme de coroutine plus général, avec transmission de valeurs dans les deux directions et valeurs de retour.
Cas d’utilisation pratiques
Les fibres permettent de créer des clients HTTP non bloquants dans Revolt, des requêtes asynchrones vers les bases de données, des ordonnanceurs de tâches coopératifs et des chaînes de traitement de données en continu, sans la complexité de l’exécution multithread.
Résumé
Les fibres permettent de suspendre et de reprendre un même contexte d’exécution PHP, ce qui rend possible la concurrence coopérative. Elles constituent le fondement des frameworks PHP asynchrones modernes. Fiber::suspend() cède le contrôle ; resume() le restitue.
Vérification rapide
Comment transmettre une valeur à une fibre suspendue ?
Questions Fréquemment Posées
La leçon « Fibers : concurrence coopérative » est-elle gratuite ?
Oui — le texte complet de « Fibers : concurrence coopérative » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fibers : concurrence coopérative » ?
Mettre en pause et reprendre l’exécution PHP avec Fibers pour créer des mécanismes de type asynchrone. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer PHP Academy ?
Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Fibers : concurrence coopérative » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?
Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Expression match et arguments nommés
- Opérateur nullsafe et types union
- Énumérations (Enums)
- Fibers : concurrence coopérative