Channel::isEmpty

(PHP 8.6+, True Async 1.0)

public Channel::isEmpty(): bool

Prüft, ob der Channel-Puffer leer ist (keine Werte zum Empfangen verfügbar).

Für einen Rendezvous-Channel (capacity = 0) gibt diese Methode immer true zurück, da Daten direkt ohne Pufferung übertragen werden.

Rückgabewerte

true — der Puffer ist leer. false — der Puffer enthält Werte.

Beispiele

Beispiel #1 Auf verfügbare Daten prüfen

<?php

use Async\Channel;

$channel = new Channel(5);

echo $channel->isEmpty() ? "leer" : "hat Daten"; // "leer"

$channel->send(42);

echo $channel->isEmpty() ? "leer" : "hat Daten"; // "hat Daten"

Beispiel #2 Stapelweise Datenverarbeitung

<?php

use Async\Channel;

$channel = new Channel(100);

spawn(function() use ($channel) {
    while (!$channel->isClosed() || !$channel->isEmpty()) {
        if ($channel->isEmpty()) {
            delay(50); // Auf eingehende Daten warten
            continue;
        }

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

        processBatch($batch);
    }
});

Siehe auch