Огляд

Розділ архітектури описує внутрішню будову ключових компонентів TrueAsync на рівні C-коду: структури даних, алгоритми, інтеграцію з Zend Engine та взаємодію між ядром PHP і асинхронним розширенням.

Ці матеріали призначені для розробників, які хочуть зрозуміти, як TrueAsync працює «під капотом», або планують створювати власні розширення.

TrueAsync ABI

Серце асинхронного ABI: вказівники на функції, система реєстрації розширень, глобальний стан (zend_async_globals_t), макроси ZEND_ASYNC_* та версіонування API.

Корутини, Планувальник та Реактор

Внутрішня будова планувальника корутин та реактора подій: черги (кільцеві буфери), перемикання контексту через fiber, мікрозадачі, цикл подій libuv, пул контекстів fiber та коректне завершення.

Події та модель подій

zend_async_event_t — базова структура даних, від якої успадковуються всі асинхронні примітиви. Система зворотних викликів, підрахунок посилань, посилання на подію, прапорці, ієрархія типів подій.

Waker — механізм очікування та пробудження

Waker — це зв’язок між корутиною та подіями. Статуси, resume_when, зворотні виклики корутин, доставка помилок, структура zend_coroutine_t та обробники перемикання.

Збирання сміття в асинхронному контексті

Як PHP GC працює з корутинами, областями видимості та контекстами: обробники get_gc, обхід стеку fiber, зомбі-корутини, ієрархічний контекст та захист від циклічних посилань.

Компоненти

Async\Pool

Універсальний пул ресурсів. Розглянуті теми:

PDO Pool

PDO-специфічний рівень поверх Async\Pool. Розглянуті теми: