Обзор

Раздел архитектуры описывает внутреннее устройство ключевых компонентов 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