Справжня асинхронність всередині 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 проти повільних клієнтів.