Channel::isClosed

(PHP 8.6+, True Async 1.0)

public Channel::isClosed(): bool

Prüft, ob der Channel durch einen close()-Aufruf geschlossen wurde.

Ein geschlossener Channel akzeptiert keine neuen Werte über send(), erlaubt aber das Lesen verbleibender Werte aus dem Puffer über recv().

Rückgabewerte

true — der Channel ist geschlossen. false — der Channel ist offen.

Beispiele

Beispiel #1 Channel-Status prüfen

<?php

use Async\Channel;

$channel = new Channel(5);

echo $channel->isClosed() ? "geschlossen" : "offen"; // "offen"

$channel->send('data');
$channel->close();

echo $channel->isClosed() ? "geschlossen" : "offen"; // "geschlossen"

// Der Puffer kann auch nach dem Schließen noch gelesen werden
$value = $channel->recv(); // "data"

Beispiel #2 Bedingtes Senden

<?php

use Async\Channel;

$channel = new Channel(10);

spawn(function() use ($channel) {
    while (!$channel->isClosed()) {
        $data = produceData();
        $channel->send($data);
        delay(100);
    }
    echo "Channel geschlossen, Senden wird gestoppt\n";
});

Siehe auch