Channel::isClosed

(PHP 8.6+, True Async 1.0)

public Channel::isClosed(): bool

Проверяет, был ли канал закрыт вызовом close().

Закрытый канал не принимает новые значения через send(), но позволяет дочитать оставшиеся значения из буфера через recv().

Возвращаемые значения

true — канал закрыт. false — канал открыт.

Примеры

Пример #1 Проверка состояния канала

<?php

use Async\Channel;

$channel = new Channel(5);

echo $channel->isClosed() ? "закрыт" : "открыт"; // "открыт"

$channel->send('данные');
$channel->close();

echo $channel->isClosed() ? "закрыт" : "открыт"; // "закрыт"

// Можно дочитать буфер даже после закрытия
$value = $channel->recv(); // "данные"

Пример #2 Условная отправка

<?php

use Async\Channel;

$channel = new Channel(10);

spawn(function() use ($channel) {
    while (!$channel->isClosed()) {
        $data = produceData();
        $channel->send($data);
        delay(100);
    }
    echo "Канал закрыт, прекращаю отправку\n";
});

См. также