Обзор
Раздел архитектуры описывает внутреннее устройство ключевых компонентов TrueAsync на уровне C-кода: структуры данных, алгоритмы, интеграцию с Zend Engine и взаимодействие между ядром PHP и async-расширением.
Эти материалы предназначены для разработчиков, которые хотят понять, как работает TrueAsync «под капотом», или планируют создавать собственные расширения.
TrueAsync ABI
Сердце асинхронного ABI: function pointers, система регистрации расширений,
глобальное состояние (zend_async_globals_t), макросы ZEND_ASYNC_*
и версионирование API.
Корутины, Scheduler и Reactor
Внутреннее устройство планировщика корутин и реактора событий: очереди (circular buffers), context switching через fiber, микротаски, libuv event loop, fiber context pool и graceful shutdown.
События и событийная модель
zend_async_event_t — базовая структура данных, от которой наследуют
все асинхронные примитивы. Callback-система, ref-counting,
event reference, флаги, иерархия типов событий.
Waker — механизм ожидания и пробуждения
Waker — связующее звено между корутиной и событиями.
Статусы, resume_when, корутинные callback’и, доставка ошибок,
структура zend_coroutine_t и switch handlers.
Сборка мусора в асинхронном контексте
Как PHP GC работает с корутинами, scope, контекстами: get_gc хендлеры,
обход fiber-стеков, zombie-корутины, иерархический контекст
и защита от циклических ссылок.
Компоненты
Async\Pool
Универсальный пул ресурсов. Описаны:
- Двухуровневая структура данных (ABI в ядре + internal в расширении)
- Алгоритмы acquire/release с FIFO-очередью ожидающих корутин
- Healthcheck через периодический таймер
- Circuit Breaker с тремя состояниями
- C API для расширений (макросы
ZEND_ASYNC_POOL_*)
PDO Pool
PDO-специфичная надстройка над Async\Pool. Описаны:
- Template-соединение и отложенное создание реальных соединений
- Привязка соединений к корутинам через HashTable
- Pinning при активных транзакциях и стейтментах
- Автоматический rollback и cleanup при завершении корутины
- Управление credentials в factory