Channel::isFull

(PHP 8.6+, True Async 1.0)

public Channel::isFull(): bool

Verifica si el búfer del canal está lleno a su capacidad máxima.

Para un canal rendezvous (capacity = 0), esto siempre devuelve true, ya que no hay búfer.

Valores de retorno

true — el búfer está lleno (o es un canal rendezvous). false — el búfer tiene espacio libre.

Ejemplos

Ejemplo #1 Verificar si el búfer está lleno

<?php

use Async\Channel;

$channel = new Channel(2);

echo $channel->isFull() ? "lleno" : "tiene espacio"; // "tiene espacio"

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

echo $channel->isFull() ? "lleno" : "tiene espacio"; // "lleno"

Ejemplo #2 Velocidad de envío adaptativa

<?php

use Async\Channel;

$channel = new Channel(50);

spawn(function() use ($channel) {
    foreach (readLargeFile('data.csv') as $line) {
        if ($channel->isFull()) {
            echo "Búfer lleno, ralentizando el procesamiento\n";
        }
        $channel->send($line); // se suspende si está lleno
    }
    $channel->close();
});

Ver también