Event loops и поддерживаемые backends
Выбор backend в сверенном коде
Заголовок раздела «Выбор backend в сверенном коде»EventLoopFactory принимает auto, linux, select, windows, revolt/fiber, event, ev, swoole, swow либо класс EventInterface. Явно запрошенный недоступный backend вызывает RuntimeException, а не молча заменяется.
Автовыбор на Unix: event → ev → Revolt/Fiber → Select. На Windows выбирается Windows loop. Auto не включает глобальные Swoole/Swow coroutine hooks; они требуют явного выбора. Порядок — предпочтение доступных capabilities, не измеренный рейтинг производительности.
| Backend | Требование |
|---|---|
| Select | Встроенный stream-based fallback |
| event | ext-event и EventBase |
| ev | ext-ev и Ev |
| Revolt/Fiber | Пакет revolt/event-loop |
| Swoole | ext-swoole и Swoole Event |
| Swow | ext-swow и Swow Coroutine |
Backend ext-uv в этой фабрике отсутствует. Установка uv не выбирает поддерживаемый backend и не доказывает ускорение. Старые libuv-first схемы/рекомендации исключены из актуального справочника.
Проверка capabilities
Заголовок раздела «Проверка capabilities»php server.php capabilities --jsonИспользуйте entry point и PHP configuration именно сервиса. EventLoopFactory::capabilities() сообщает доступность backends, Server capabilities — также process/upgrade support. Доступность не доказывает production limits и полную тестовую матрицу.
Модель программирования
Заголовок раздела «Модель программирования»Loop управляет readable/writable watchers, timers и поддерживаемыми signals. Зарегистрируйте работу и запускайте loop; callbacks должны быстро возвращать управление. File/HTTP/SQL остаются блокирующими без асинхронной реализации/runtime. Timer::sleep приостанавливает только с suspension-capable backend в поддерживаемом context; обычный fallback вызывает usleep.
Явно назначайте владельцев: удаляйте watchers/timers и закрывайте ресурсы при завершении lifecycle. Проверяйте callback errors, cancellation, slow consumers и shutdown. См. Timer и запускаемые примеры.
Ivan Zorin, creator@localzet.com. Copyright © 2026 Localzet Group. Guide AGPL-3.0-or-later; source licenses retained.