Async PHP in traditional environments - Spanish

PHP asíncrono: ¿qué es, y se puede aprovechar en un entorno tradicional?

Programación asíncrona

La programación asíncrona permite iniciar múltiples operaciones sin esperar a que cada una finalice, utilizando un event loop para gestionar tareas concurrentes.

Flujo tradicional

flowchart TD
    A[Inicio]
    B[Tarea 1]
    C[Tarea 2]
    D[Fin]
    A --> B
    B --> C
    C --> D

Flujo asíncrono

flowchart TD
    A[Inicio]
    B[Desencadenar tareas asíncronas]
    C[Tarea 1]
    D[Tarea 2]
    E[Recoger resultados]
    F[Fin]
    A --> B
    B --> C
    B --> D
    C --> E
    D --> E
    E --> F

flowchart TD
	INI[Inicia aplicación] --> B
    A[Cliente] -->|HTTP Request| B[Servidor Asíncrono]
    B --> C[Event Loop]
    C --> D[Desencadenar Tareas Async]
    D --> E[Acceso a DB / APIs Externas]
    E --> D
    D --> F[Procesar Respuesta Asíncrona]
    F --> B
    B -->|HTTP Response| A

Flujo híbrido

flowchart TD
    A[Inicio]
    B[Tarea sincrónica inicial]
    C[Desencadenar tareas asíncronas]
    D[Tarea asíncrona 1]
    E[Tarea asíncrona 2]
    F[Recoger resultados]
    G[Tarea sincrónica final]
    H[Fin]
    A --> B
    B --> C
    C --> D
    C --> E
    D --> F
    E --> F
    F --> G
    G --> H

PHP tradicional vs. asíncrono

En el modelo tradicional, cada operación bloquea la ejecución hasta completarse; en el modelo asíncrono, se pueden gestionar las operaciones de E/S sin detener el flujo principal.

Frameworks y librerías existentes

SWOW

Swoole

AMPHP

ReactPHP

Frameworks web

Phenix

Empress

Neutomic

Framework X

Hyperf

Aplicación en entornos tradicionales

Se aprovecha en tareas intensivas de E/S (HTTP, archivos, bases de datos).
No sustituye la programación síncrona, sino que la complementa en casos específicos para mejorar el rendimiento y la escalabilidad.

Llamadas a servicios externos

Hidratación masiva con datos de muestra

Consultas en paralelo

Query stream

Websockets/SSE

Recursos

https://github.com/elazar/asynchronous-php