Uebersicht
Der Architekturbereich beschreibt das interne Design der wichtigsten TrueAsync-Komponenten auf der C-Code-Ebene: Datenstrukturen, Algorithmen, Integration mit der Zend Engine und Interaktion zwischen dem PHP-Kern und der Async-Erweiterung.
Diese Materialien richten sich an Entwickler, die verstehen moechten, wie TrueAsync “unter der Haube” funktioniert, oder planen, eigene Erweiterungen zu erstellen.
TrueAsync ABI
Das Herzstueck der asynchronen ABI: Funktionszeiger, Erweiterungsregistrierungssystem,
globaler Zustand (zend_async_globals_t), ZEND_ASYNC_*-Makros
und API-Versionierung.
Koroutinen, Scheduler und Reactor
Internes Design des Koroutinen-Schedulers und Event-Reactors: Warteschlangen (Ringpuffer), Kontextwechsel ueber Fiber, Microtasks, libuv-Event-Loop, Fiber-Kontextpool und geordnetes Herunterfahren.
Events und das Event-Modell
zend_async_event_t – die Basisdatenstruktur, von der
alle asynchronen Primitive erben. Callback-System, Ref-Counting,
Event-Referenz, Flags, Event-Typ-Hierarchie.
Waker – Warte- und Aufweckmechanismus
Waker ist die Verbindung zwischen einer Koroutine und Events.
Statuswerte, resume_when, Koroutinen-Callbacks, Fehlerweiterleitung,
zend_coroutine_t-Struktur und Switch-Handler.
Garbage Collection im asynchronen Kontext
Wie PHP GC mit Koroutinen, Scope und Kontexten funktioniert: get_gc-Handler,
Fiber-Stack-Traversierung, Zombie-Koroutinen, hierarchischer Kontext
und Schutz vor zirkulaeren Referenzen.
Komponenten
Async\Pool
Universeller Ressourcenpool. Behandelte Themen:
- Zweistufige Datenstruktur (ABI im Kern + intern in der Erweiterung)
- Acquire/Release-Algorithmen mit einer FIFO-Warteschlange wartender Koroutinen
- Healthcheck ueber periodischen Timer
- Circuit Breaker mit drei Zustaenden
- C API fuer Erweiterungen (
ZEND_ASYNC_POOL_*-Makros)
PDO Pool
PDO-spezifische Schicht ueber Async\Pool. Behandelte Themen:
- Template-Verbindung und verzoegerte Erstellung realer Verbindungen
- Bindung von Verbindungen an Koroutinen ueber HashTable
- Pinning waehrend aktiver Transaktionen und Statements
- Automatisches Rollback und Bereinigung bei Koroutinen-Abschluss
- Zugangsdatenverwaltung in der Factory