Modern Async Foundations for PHP
High-performance asynchronous framework for PHP with support for Revolt and Swoole
- High-performance asynchronous execution for modern PHP projects
- Event-loop driven architecture
- Compatible with Revolt and Swoole
- Fiber-friendly async design
- Non-blocking file, socket, and stream utilities
- Lightweight helpers for building async-first applications
- MIT licensed and easy to integrate into existing codebases
- PHP 8.4 or higher
revolt/event-loop : ^1.0- Optional :
ext-swoolefor high-performance coroutine support - Optional :
ext-pcntlfor better signal handling
Install via Composer :
composer require taknone/asynciopecl install swoole| Extension | Purpose |
|---|---|
| Swoole | High-performance coroutine runtime |
| PCNTL | Better signal handling |
The library is designed to be used with async-friendly code, event loops, Fibers, and non-blocking I/O
<?php
require 'vendor/autoload.php';
use function Tak\Asyncio\async;
use function Tak\Asyncio\delay;
use Tak\Asyncio\TimeoutCancellation;
$future = async(function () : void {
echo 'Background task initialized' , PHP_EOL;
delay(1.5);
echo 'Background task completed' , PHP_EOL;
});
echo 'Main execution continues without blocking.' , PHP_EOL;
$future->await(new TimeoutCancellation(2));
echo 'Future resolved successfully' , PHP_EOL;This package is autoloaded through PSR-4 with the Tak\\Asyncio\\ namespace and includes helper files for :
src/functions.phpsrc/File/functions.phpsrc/Socket/functions.phpsrc/ByteStream/functions.php
That layout is ideal for helper-based async APIs that cover core runtime, file, socket, and stream operations
Asyncio is built for developers who want a clean async layer without sacrificing PHP performance or portability. It is a good fit for :
- async services
- background workers
- socket servers
- file streaming
- high-concurrency I/O
- coroutine-based applications
- Use Revolt when you want a standards-friendly event loop
- Use Swoole when you want coroutine-based high-performance execution
- Keep I/O non-blocking to get the best results
- Prefer async helpers instead of direct blocking calls inside loop-driven code
Contributions are welcome. Please keep changes consistent with the existing architecture, naming style, and async-first design
This project is licensed under the MIT License