Descripcion general

La seccion de arquitectura describe el diseno interno de los componentes clave de TrueAsync a nivel de codigo C: estructuras de datos, algoritmos, integracion con Zend Engine e interaccion entre el nucleo de PHP y la extension asincrona.

Estos materiales estan destinados a desarrolladores que desean comprender como funciona TrueAsync "bajo el capo" o planean crear sus propias extensiones.

TrueAsync ABI

El corazon del ABI asincrono: punteros a funciones, sistema de registro de extensiones, estado global (zend_async_globals_t), macros ZEND_ASYNC_* y versionado del API.

Corrutinas, Planificador y Reactor

Diseno interno del planificador de corrutinas y el reactor de eventos: colas (buffers circulares), cambio de contexto mediante fiber, microtareas, bucle de eventos libuv, pool de contextos fiber y apagado ordenado.

Eventos y el Modelo de Eventos

zend_async_event_t -- la estructura de datos base de la cual heredan todas las primitivas asincronas. Sistema de callbacks, conteo de referencias, referencia de evento, flags, jerarquia de tipos de evento.

Waker -- Mecanismo de Espera y Activacion

El Waker es el enlace entre una corrutina y los eventos. Estados, resume_when, callbacks de corrutinas, entrega de errores, estructura zend_coroutine_t y switch handlers.

Recoleccion de Basura en Contexto Asincrono

Como funciona el GC de PHP con corrutinas, scope y contextos: handlers get_gc, recorrido de la pila fiber, corrutinas zombie, contexto jerarquico y proteccion contra referencias circulares.

Componentes

Async\Pool

Pool universal de recursos. Temas cubiertos:

  • Estructura de datos de dos niveles (ABI en el nucleo + interna en la extension)
  • Algoritmos de acquire/release con cola FIFO de corrutinas en espera
  • Healthcheck mediante temporizador periodico
  • Circuit Breaker con tres estados
  • API en C para extensiones (macros ZEND_ASYNC_POOL_*)

PDO Pool

Capa especifica de PDO sobre Async\Pool. Temas cubiertos:

  • Conexion plantilla y creacion diferida de conexiones reales
  • Vinculacion de conexiones a corrutinas mediante HashTable
  • Fijacion durante transacciones activas y sentencias
  • Rollback automatico y limpieza al finalizar la corrutina
  • Gestion de credenciales en la factoria