函式名稱: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() 方法將會阻塞當前協程,直到有足夠的空間可用。