查詢

Swoole\Channel::push()函式—用法及示例

「 向通道中推送資料 」


函式名稱:Swoole\Channel::push()

適用版本:Swoole 4.2.0 或更高版本

函式說明:Swoole\Channel::push() 方法用於向通道中推送資料。通道是一個用於多個協程之間進行安全通訊的高效機制。push() 方法將資料壓入通道的佇列中,如果通道已滿,則會阻塞當前協程,直到有空間可用。

用法示例:

<?php

// 建立一個容量為10的通道
$channel = new Swoole\Channel(10);

// 建立一個協程函式
go(function() use ($channel) {
    // 向通道中推送資料
    $channel->push('Hello');
    echo "Data pushed to channel\n";
});

// 建立另一個協程函式
go(function() use ($channel) {
    // 從通道中讀取資料
    $data = $channel->pop();
    echo "Data popped from channel: " . $data . "\n";
});

// 啟動Swoole事件迴圈
Swoole\Event::wait();

在上面的示例中,我們首先建立了一個容量為10的通道。然後,我們建立了兩個協程函式,一個用於推送資料到通道中,另一個用於從通道中讀取資料。在第一個協程函式中,我們使用 push() 方法將字串 "Hello" 推送到通道中,並列印出一條訊息。在第二個協程函式中,我們使用 pop() 方法從通道中讀取資料,並列印出讀取到的資料。

最後,我們使用 Swoole\Event::wait() 啟動Swoole的事件迴圈,使協程能夠正確地執行。當執行該指令碼時,你將看到以下輸出:

Data pushed to channel
Data popped from channel: Hello

這表明資料成功地從通道中推送和讀取。請注意,如果通道已滿,push() 方法將會阻塞當前協程,直到有足夠的空間可用。

補充糾錯
上一個函式: Swoole\Channel::stats()函式
下一個函式: Swoole\Channel::pop()函式
熱門PHP函式
分享連結