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() ? "full" : "has space"; // "has space"

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

echo $channel->isFull() ? "full" : "has space"; // "full"

Приклад #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();
});

Дивіться також