Programación asíncrona en PHP: guía completa para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a la programación asíncrona en PHP



Tradicionalmente, PHP funciona en modo síncrono: cada solicitud se ejecuta secuencialmente, línea por línea. Sin embargo, en el desarrollo web moderno, cada vez se requiere procesar múltiples tareas simultáneamente, desde el envío de correos hasta trabajar con WebSocket y API. La programación asíncrona en PHP permite resolver estas tareas de manera eficiente, sin bloquear el flujo principal de ejecución.



En esta guía, analizaremos qué es la asincronía, por qué es necesaria y cómo empezar a usarla en PHP. Conocerá las herramientas clave: Fiber, ReactPHP, Swoole y las funciones integradas para trabajar con corrutinas.



¿Qué es la programación asíncrona y por qué es necesaria?



Código síncrono vs Asíncrono



Imagine que pide una pizza. Enfoque síncrono: llama, espera a que la preparen y solo entonces cuelga. Asíncrono: llama, deja el pedido y mientras preparan la pizza, hace sus cosas. En PHP se ve así:



// Código síncrono (bloqueante)$data = file_get_contents('https://api.example.com');echo "Datos recibidos: " . $data; // Esperamos a que se cargue

// Código asíncrono (no bloqueante)$promise = async_file_get_contents('https://api.example.com');echo "Solicitud enviada, puede hacer otras cosas...";$data = await($promise); // Obtenemos el resultado después


Problemas del PHP síncrono



  • Bloqueo de E/S: las operaciones con archivos, BD o solicitudes de red detienen la ejecución del script
  • Bajo rendimiento: cada nueva solicitud requiere un proceso o hilo separado
  • Problemas en tiempo real: chats, notificaciones y streaming funcionan de manera ineficiente


Ventajas del enfoque asíncrono



  • Procesamiento simultáneo de cientos y miles de conexiones
  • Ahorro de memoria y recursos del servidor
  • Posibilidad de crear aplicaciones en tiempo real
  • Interfaces más receptivas


Herramientas principales de PHP asíncrono



1. Corrutinas y Fiber (PHP 8.1+)



A partir de PHP 8.1, se agregó soporte integrado para Fiber, corrutinas ligeras. Fiber permite pausar la ejecución de una función y reanudarla más tarde, sin bloquear el hilo principal.



<?php$fiber = new Fiber(function(): void {    $value = Fiber::suspend('first');    echo "Reanudado con el valor: $value";});

$value = $fiber->start();echo "Valor inicial: $value"; // first$fiber->resume('second'); // Reanudado con el valor: second?>


2. ReactPHP — Event Loop para PHP



ReactPHP es una biblioteca que implementa la programación orientada a eventos (event loop). Permite realizar operaciones de entrada/salida no bloqueantes.



<?phprequire 'vendor/autoload.php';

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

$loop->addTimer(1.0, function () { echo "Pasó 1 segundo";});

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

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


ReactPHP también proporciona clientes y servidores HTTP asíncronos:



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

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


3. Swoole — servidor asíncrono de alto rendimiento



Swoole es una extensión para PHP que lo convierte en un servidor asíncrono completo. Soporta corrutinas, WebSocket, servidores TCP/UDP y mucho más.



<?ph                

Blogs

Book Recommendations