Настоящая асинхронность внутри PHP
Пиши синхронно. Выполняй асинхронно.
Представьте PHP с корутинами, где знакомые функции поддерживают конкурентный ввод вывод. Создавайте высокопроизводительные конкурентные приложения с чистым, читаемым кодом и минимумом изменений!
// three coroutines run at the same time
$page = spawn(fn() => file_get_contents($url));
$rows = spawn(fn() => $pdo->query($sql)->fetchAll());
$stats = spawn(fn() => file_get_contents($api));
// wait for all three, cancel after 2s
[$html, $data, $meta] = await_all_or_fail(
[$page, $rows, $stats], timeout(2000));API, ориентированный на продакшен
Корутины
Лёгкие корутины для эффективного конкурентного выполнения. Никаких цветных async функций. Просто делай spawn() и вперёд!
Неблокирующий I/O
fread, fwrite, file_get_contents, ob_start, curl, MySQL, PostgreSQL. Обычные функции PHP теперь работают асинхронно без дополнительных усилий.
TrueAsync Server
Нативный Web-сервер на C с поддержкой HTTP/1.1, HTTP/2 и HTTP/3 прямо внутри PHP-процесса.
Кооперативная отмена
Простой и гибкий API для отмены корутин. Scope::cancel().
Структурная конкурентность
Контроль времени жизни корутин с помощью песочницы Scope. Управление группой корутин через TaskGroup
PDO Pool
Поддержка пула соединений прямо в PDO. Автоматическое управление коннектами для максимальной производительности.
Channel · ThreadPool
Обмен данными между корутинами. Буферизованные и небуферизованные каналы. Межпотоковая передача через ThreadChannel; параллельные CPU-задачи через Thread и ThreadPool.
Futures
Отложенные результаты для асинхронных вычислений. Композиция через await_all, await_first.
PHP Mobile
Поддержка Android на уровне ядра PHP: асинхронный рантайм внутри нативного приложения через native-bridge.
Осваивайте TrueAsync на практике
Практические материалы: от первой корутины до структурной конкурентности и встроенного сервера.
Корутины
Первое знакомство с корутинами: spawn() и конкурентное выполнение.
Scope
Кто владеет корутинами, ждёт их завершения и отменяет всей группой.
PDO Pool
Почему корутинам нельзя делить один PDO и как встроенный пул решает это прозрачно.
Потоки
spawn_thread и ThreadPool: настоящий параллелизм для вычислений.
Первый сервер
HTTP-сервер внутри PHP: HttpServer, HttpServerConfig и первый обработчик.
WebSocket
Цикл recv, чат-комната, send из чужих корутин и trySend против медленных клиентов.