Las aplicaciones PHP que necesitan concurrencia —llamar a varias API a la vez, consultar una base de datos mientras se lee un archivo— han dependido históricamente de bibliotecas añadidas como AMPHP, ReactPHP o Swoole. El proyecto True Async toma otro camino: implementar un modelo de concurrencia dentro del propio motor de PHP. Su RFC figura en php.watch con PHP 8.6 como versión objetivo.
La API se centra en unos pocos conceptos. spawn() crea una corrutina, una unidad de ejecución que puede pausarse y reanudarse; await() espera el resultado de una corrutina; Scope gestiona el ciclo de vida de un grupo de corrutinas, pudiendo cancelarlas todas si una falla; y la cancelación está diseñada para ser segura, sin dejar datos a medias. Si se envuelven tres operaciones secuenciales de un segundo en spawn() y se recogen con await_all_or_fail() con un timeout, se ejecutan concurrentemente: la espera total se aproxima a la operación más lenta en lugar de la suma de las tres.
A diferencia de async/await en JavaScript o Python, True Async evita las «funciones coloreadas»: no hay palabra clave async, y el código síncrono normal se ejecuta sin cambios dentro de una corrutina. La implementación lo logra modificando el núcleo Zend junto con las capas de E/S, base de datos y sockets. En el fondo es multitarea cooperativa —un proceso PHP, un hilo— donde la CPU cambia a otra corrutina en cuanto la actual se bloquea en E/S. Una visualización interactiva en el sitio del proyecto muestra este reparto de tiempo de CPU entre dos corrutinas (una procesando datos de usuarios, otra registrando logs y enviando notificaciones).
El proyecto es más que una propuesta en papel. La versión actual, v0.8.4, etiquetada como «Experimental Core», incluye corrutinas funcionales, E/S no bloqueante para funciones como fread, file_get_contents y cURL, pooling de conexiones PDO integrado, soporte de hilos nativos mediante spawn_thread() para trabajo paralelo de CPU, e incluso un servidor HTTP/1.1, HTTP/2 y HTTP/3 escrito en C que corre dentro del proceso PHP sin proxy inverso. La extensión se instala en PHP 8.5+ mediante un instalador oficial o una imagen Docker precompilada; aún es experimental y no se recomienda para producción.
Más de 70 funciones estándar de PHP se han adaptado para volverse no bloqueantes automáticamente dentro de una corrutina, comportándose exactamente igual que antes fuera de ella —sin cambios disruptivos para el código existente. Las áreas cubiertas incluyen DNS (gethostbyname() y afines), PDO MySQL y PgSQL, MySQLi, PostgreSQL nativo, cURL, sockets, E/S de archivos y streams (fopen(), fread(), file_put_contents(), flock()), sockets de stream, ejecución de procesos (proc_open(), exec(), shell_exec()), temporizadores (sleep(), usleep()) y búferes de salida aislados por corrutina. flock(), una llamada al sistema bloqueante por naturaleza, se deriva a un pool de hilos para que las demás corrutinas sigan ejecutándose. Aún sin soporte quedan las operaciones de directorios como opendir() y mkdir() y algunos controladores PDO como Oracle y SQLite, considerados menos prioritarios porque las operaciones de metadatos locales suelen ser lo bastante rápidas.
La hoja de ruta apunta a una v1.0 estable en noviembre de 2026, coincidiendo con el calendario de PHP 8.6: PHP 8.6 Alpha 1 se publicó el 2 de julio de 2026, la Beta 1 se espera hacia mediados de agosto de 2026 y la versión final está prevista para el 19 de noviembre de 2026. Que la funcionalidad llegue realmente a la 8.6 sigue abierto: en los cambios mayores del núcleo, la certeza suele llegar solo cerca del lanzamiento.
Para los desarrolladores que experimentan con la extensión, el paquete Composer solo para desarrollo true-async/ide-helper ofrece autocompletado, documentación en línea y stubs para PhpStorm, PHPStan y Psalm —desde el núcleo asíncrono hasta el servidor HTTP y un cliente ClickHouse. Útil, ya que la API aún cambia entre versiones.
Comentarios
Aún no hay comentarios — escribe el primero.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
Esperando tu clic …
·