PHPackages                             eor\_bah545/asyncio - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. eor\_bah545/asyncio

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

eor\_bah545/asyncio
===================

Async/await for PHP 8.1+ using Fibers. Event loop, promises, timers, HTTP server — all in one file, no dependencies.

00PHP

Since May 24Pushed 2mo agoCompare

[ Source](https://github.com/phoenixshareplus/asyncio)[ Packagist](https://packagist.org/packages/eor_bah545/asyncio)[ RSS](/packages/eor-bah545-asyncio/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

 [![xAI Logo](https://avatars.githubusercontent.com/u/279503836?v=4)](https://avatars.githubusercontent.com/u/279503836?v=4)Async/await for PHP
===================

[](#asyncawait-for-php)

Promises Async/await for PHP 8.1+ using Fibers.

 [![PHP Version](https://camo.githubusercontent.com/83dd395020c37276225039739320f6c8e7e99963ab21ee3d09282cb48dad2a60/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312532422d626c7565)](https://camo.githubusercontent.com/83dd395020c37276225039739320f6c8e7e99963ab21ee3d09282cb48dad2a60/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312532422d626c7565)
 [![License](https://camo.githubusercontent.com/f5926f672d3779f0c2a15b5cdb3a9b25158c9ef437da3e89bf7fe37e13d3128f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652f4170616368652d322e302532422d677265656e)](https://camo.githubusercontent.com/f5926f672d3779f0c2a15b5cdb3a9b25158c9ef437da3e89bf7fe37e13d3128f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652f4170616368652d322e302532422d677265656e)

**Asyncio** est une librairie asynchrone **100% PHP** sans dépendance externe. Elle apporte un vrai mécanisme `async`/`await` grâce aux [Fibers](https://www.php.net/manual/fr/language.fibers.php), une boucle d'événements, des promesses chaînables et des primitives de synchronisation (Queue, Lock, Event, Future).
Un serveur HTTP asynchrone est inclus pour exécuter vos handlers de manière non‑bloquante en guise d'exemple.

Documentation
-------------

[](#documentation)

Une documentation complète est disponible au [dossier docs](/docs/Index.md). Explorez des guides détaillés, des exemples et des tutoriels pour tirer le meilleur parti de la library.

Installation
------------

[](#installation)

Install depuis packagist avec composer.

```
composer require eor_bah545/asyncio
```

Vous pouvez egalement utiliser github

```
git clone https://github.com/phoenixshareplus/asyncio.git
cd asyncio
composer dump-autoload
```

### Requirements

[](#requirements)

PHP 8.1 ou une version supérieur est requis pour utiliser la library `asyncio` pour un support des Fibers.

Usage
-----

[](#usage)

La librairy asyncio prend en charge a la fois l'asynchrone et le synchrone. Pour un ensemble complet d'exemples illustrant les capacités de la librairy, notamment les promises, les events, et bien plus encore, reportez vous au [dossier examples](/examples).

### Asyncio Utilisation

[](#asyncio-utilisation)

Initialez des processus async/await en créer des fonction non blockante avec un support de `then` et `catch` pour capturer les reponse ou les erreur sans bloquer l'execution du code et on peut definir des tache en parallèle.

```
use EorBah545\Asyncio\Asyncio;
use function EorBah545\Asyncio\await;

// Définit une tâche asynchrone
$task = Asyncio::async(function (string $name) {
    echo "[$name] Début\n";
    await(Asyncio::sleep(1.5));   // pause non‑bloquante
    echo "[$name] Fin\n";
    return "$name OK";
});

// Lance deux tâches en parallèle
$prom1 = $task("T1");
$prom2 = $task("T2");

$prom1->then(function($res) {
    echo "$res\n";
});
$prom2->then(function($res) {
    echo "$res\n";
});

// Exécute la boucle d'événements
Asyncio::run(function () {
    await(Asyncio::sleep(2)); // laisse le temps aux tâches
});
```

Si vous utilisez notre server defini dans les exemple alors nous pourriez definir des methodes `get` ou `post` avec des fonction totalement asynchrone qui ne bloque pas le threads.

```
use EorBah545\Examples\HttpServer;
use EorBah545\Asyncio\Asyncio;
use function EorBah545\Asyncio\await;

$server = new HttpServer("MonApp");

$server->get('/', function ($request, Asyncio $async) {
    await($async::sleep(1)); // simulation d'un traitement long
    return ['message' => 'Hello World'];
});

$server->post('/data', function ($request, Asyncio $async) {
    $body = json_decode($request['body'], true);
    return ['received' => $body];
});

$server->run(8000);
```

Une fois le script executer avec php le serveur srra mus en marche sur le port 8000, ensuite testez avec curl  – la réponse arrive après 1 seconde, sans bloquer le serveur.

Primitives de synchronisation:
------------------------------

[](#primitives-de-synchronisation)

### Queue

[](#queue)

```
$queue = new Queue(2);
await($queue->put($item));
$item = await($queue->get());
```

Il faut absolument comprendre que l'utilisation d'`await` hors d'une fonction asynchrone defini par `Asyncion::run` genere automatiquement une exception.

### Lock

[](#lock)

```
$lock = new Lock();
await($lock->acquire());
// section critique
$lock->release();
```

### Event

[](#event)

```
$event = new Event();
await($event->wait()); // sera réveillé par $event->set()
$event->clear();
```

### Future

[](#future)

```
$future = new Future();
$future->set_result(42);
$result = await($future->await());
```

Advanced Features
-----------------

[](#advanced-features)

### Asyncio

[](#asyncio)

- `async(callable $fn)`: \\Closure Transforme une fonction en coroutine retournant une Promise.
- `run(callable $coroutine)`: mixed Exécute une coroutine et démarre la boucle événementielle.
- `sleep(float $seconds)`: Promise Promesse résolue après $seconds secondes (non‑bloquant).
- `gather(array $promises)`: Promise Équivaut à Promise::all().
- `wait(array $promises)`: Promise Équivaut à Promise::allSettled().
- `timeout(callable $coroutine, float $seconds)`: Promise Rejette si la coroutine dépasse le délai.
- `ErrorHandling(callable $asyncFunc)`: \\Closure Décore une fonction async pour capturer les erreurs et retourner null.
- `createTask(callable $coroutine)`: Promise Lance une coroutine dans une Fiber et retourne une promesse.

### Promise

[](#promise)

- `then(?callable $onFulfilled, ?callable $onRejected)`: Promise
- `catch(callable $onRejected)`: Promise
- `await()`: mixed (à utiliser uniquement dans une coroutine)
- Méthodes statiques : `resolve($value)`, `reject($reason)`, `all($promises)`, `allSettled($promises)`, `race($promises)`

### Scheduler

[](#scheduler)

- `getInstance(): self`
- `run(callable $coroutine): void`
- `addTimer(float $seconds, callable $callback): void`
- `onReadable($stream, callable $callback): void`
- `onWritable($stream, callable $callback): void`
- `removeStream($stream): void`

License
-------

[](#license)

La librairy Asyncio est distribué sous la license Apache-2.0.

Contributing
------------

[](#contributing)

Consulter la [documentation](/CONTRIBUTING.md) sur la contribution à ce projet.

###  Health Score

19

—

LowBetter than 9% of packages

Maintenance58

Moderate activity, may be stable

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/0c8bcef8d92f391294f1fb9f35907a920bcf34c89d93307e852d139bde49d136?d=identicon)[eorbah545](/maintainers/eorbah545)

---

Top Contributors

[![EORBAH](https://avatars.githubusercontent.com/u/182552823?v=4)](https://github.com/EORBAH "EORBAH (7 commits)")

### Embed Badge

![Health badge](/badges/eor-bah545-asyncio/health.svg)

```
[![Health](https://phpackages.com/badges/eor-bah545-asyncio/health.svg)](https://phpackages.com/packages/eor-bah545-asyncio)
```

###  Alternatives

[drupol/phpartition

Partition problem for balanced arrays splitting made easy.

104.5k1](/packages/drupol-phpartition)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
