Channel::isFull

(PHP 8.6+, True Async 1.0)

public Channel::isFull(): bool

Проверяет, заполнен ли буфер канала до максимальной ёмкости.

Для канала-рандеву (capacity = 0) всегда возвращает true, так как буфер отсутствует.

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

true — буфер полон (или канал-рандеву). false — в буфере есть свободное место.

Примеры

Пример #1 Проверка заполненности буфера

<?php

use Async\Channel;

$channel = new Channel(2);

echo $channel->isFull() ? "полон" : "есть место"; // "есть место"

$channel->send('a');
$channel->send('b');

echo $channel->isFull() ? "полон" : "есть место"; // "полон"

Пример #2 Адаптивная скорость отправки

<?php

use Async\Channel;

$channel = new Channel(50);

spawn(function() use ($channel) {
    foreach (readLargeFile('data.csv') as $line) {
        if ($channel->isFull()) {
            echo "Буфер полон, замедляю обработку\n";
        }
        $channel->send($line); // приостановится если полон
    }
    $channel->close();
});

См. также