Swoole\Coroutine\Channel->pop()

Swoole Coroutine Channel Pop

Declaration

<?php
Swoole\Coroutine\Channel->pop(float $timeout = -1): mixed

Parameters

timeout

The timeout period to wait when the channel is empty, the default will block and wait for data to be available

Return

The return value can be any type of PHP variable, including anonymous functions and resources.

Description

Reads and removes one item of data from the channel.

Quick Usage Example

Wait and pop up one element from the queue of the channel.

<?php

$chan = new Swoole\Coroutine\Channel(1);

Co\run(function () use ($chan) {
    $cid = Swoole\Coroutine::getuid();
    $i = 0;
    while (1) {
        co::sleep(1.0);
        $chan->push(['rand' => rand(1000, 9999), 'index' => $i]);
        echo "[coroutine $cid] - $i\n";
        $i++;
    }
});

Co\run(function () use ($chan) {
    $cid = Swoole\Coroutine::getuid();
    while(1) {
        $data = $chan->pop();
        echo "[coroutine $cid]\n";
        var_dump($data);
    }
});

Notes

When the channel is closed, the execution fails and returns false.

You can use $channel->errCode to access the error code for more detail on what happened.