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
- Channel::isFull — Prüfen, ob der Puffer voll ist
- Channel::count — Anzahl der Werte im Puffer
- Channel::recv — Einen Wert empfangen