Fibers: concurrencia cooperativa
Pause y reanude la ejecución de PHP con Fibers para implementar patrones similares a la asincronía.
Fibers: concurrencia cooperativa es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué son las fibras?
PHP 8.1 introdujo las fibras: corutinas ligeras que pueden pausar la ejecución en un punto concreto y reanudarla más tarde, lo que permite la multitarea cooperativa.
Fibras frente a asincronía
Las fibras no son hilos paralelos; PHP sigue siendo de un solo hilo. Las fibras permiten que un contexto de ejecución ceda voluntariamente el control a otro, lo que hace posibles patrones similares a los asíncronos.
Crear una fibra
Cree un Fiber pasando un callable a su constructor. La fibra no se inicia hasta que llama a start().
<?php
$fiber = new Fiber(function (): void {
echo "Fiber started\n";
$value = Fiber::suspend("first suspension");
echo "Resumed with: $value\n";
});
Iniciar y suspender
start() ejecuta la fibra hasta el primer Fiber::suspend(). El valor pasado a suspend() se devuelve desde start().
<?php
$suspended = $fiber->start(); // runs until suspend()
echo $suspended; // "first suspension"
Reanudar un Fiber
resume($value) continúa la fibra desde el punto en el que se suspendió. El valor pasado a resume() lo devuelve Fiber::suspend() dentro de la fibra.
<?php
$fiber->resume("hello from main");
// Inside fiber: $value = "hello from main"
// Prints: "Resumed with: hello from main"Ejemplo completo de Fiber
Ciclo de vida completo de un Fiber: crear, iniciar, suspender, reanudar y terminar.
<?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étodos de estado de Fiber
Compruebe el estado de la fibra: isStarted(), isSuspended(), isRunning(), isTerminated().
<?php
var_dump($fiber->isTerminated()); // true after getReturn()Gestión de errores en fibras
Lance una excepción en una fibra con $fiber->throw(new Exception(...)). La excepción aparece en el punto de Fiber::suspend() dentro de la fibra.
Integración con el bucle de eventos
Las fibras están diseñadas para impulsar bucles de eventos (ReactPHP, Revolt), en los que los callbacks de E/S se suspenden mientras esperan y se reanudan cuando llegan datos.
Fibras frente a generadores
Los generadores (PHP 5.5+) también se pausan con yield, pero se usan principalmente para la iteración perezosa. Las fibras son un mecanismo de corrutinas más general, con paso bidireccional de valores y valores de retorno.
Casos de uso prácticos
Las fibras permiten crear clientes HTTP no bloqueantes en Revolt, consultas asíncronas a bases de datos, planificadores de tareas cooperativos y canalizaciones de datos en streaming sin la complejidad de los subprocesos múltiples.
Resumen
Las fibras permiten pausar y reanudar un contexto de ejecución de PHP, lo que habilita la concurrencia cooperativa. Son la base de los frameworks asíncronos modernos de PHP. Fiber::suspend() cede el control; resume() lo restaura.
Comprobación rápida
¿Cómo se pasa un valor a un Fiber suspendido?
Aprende PHP con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 49
- Lecciones
- 195
Preguntas frecuentes
¿La lección «Fibers: concurrencia cooperativa» es gratis?
Sí — el texto completo de «Fibers: concurrencia cooperativa» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Fibers: concurrencia cooperativa»?
Pause y reanude la ejecución de PHP con Fibers para implementar patrones similares a la asincronía. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar PHP Academy?
No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Fibers: concurrencia cooperativa»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de PHP Academy?
Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Expresión match y argumentos con nombre
- Operador nullsafe y tipos unión
- Enumeraciones (Enums)
- Fibers: concurrencia cooperativa