Channel::isEmpty

(PHP 8.6+, True Async 1.0)

public Channel::isEmpty(): bool

Vérifie si le tampon du canal est vide (aucune valeur disponible pour la réception).

Pour un canal rendez-vous (capacity = 0), cette méthode retourne toujours true, car les données sont transférées directement sans mise en tampon.

Valeurs de retour

true — le tampon est vide. false — le tampon contient des valeurs.

Exemples

Exemple #1 Vérification des données disponibles

<?php

use Async\Channel;

$channel = new Channel(5);

echo $channel->isEmpty() ? "vide" : "contient des données"; // "vide"

$channel->send(42);

echo $channel->isEmpty() ? "vide" : "contient des données"; // "contient des données"

Exemple #2 Traitement par lots des données

<?php

use Async\Channel;

$channel = new Channel(100);

spawn(function() use ($channel) {
    while (!$channel->isClosed() || !$channel->isEmpty()) {
        if ($channel->isEmpty()) {
            delay(50); // attendre l'arrivée de données
            continue;
        }

        $batch = [];
        while (!$channel->isEmpty() && count($batch) < 10) {
            $batch[] = $channel->recv();
        }

        processBatch($batch);
    }
});

Voir aussi