本篇內(nèi)容主要講解“php如何讓Swoole/Pool進(jìn)程池實(shí)現(xiàn)redis持久連接”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“php如何讓Swoole/Pool進(jìn)程池實(shí)現(xiàn)Redis持久連接”吧!
專業(yè)領(lǐng)域包括成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、商城網(wǎng)站建設(shè)、微信營銷、系統(tǒng)平臺開發(fā), 與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,創(chuàng)新互聯(lián)的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。
php 讓 Swoole | Pool進(jìn)程池實(shí)現(xiàn)Redis持久連接
進(jìn)程池,基于Swoole\Server的Manager管理進(jìn)程模塊實(shí)現(xiàn)??晒芾矶鄠€(gè)工作進(jìn)程,相比 Process 實(shí)現(xiàn)多進(jìn)程,Process\Pool 更加簡單,封裝層次更高,開發(fā)者無需編寫過多代碼即可實(shí)現(xiàn)進(jìn)程管理功能,配合 Co\Server 可以創(chuàng)建純協(xié)程風(fēng)格的,能利用多核 CPU 的服務(wù)端程序。
Swoole進(jìn)程池實(shí)現(xiàn)redis數(shù)據(jù)讀取
如下案例,通過WorkerStart啟動Redis進(jìn)程池,并持久讀取Redis列表數(shù)據(jù);當(dāng)WorkerStop斷開所有連接時(shí)回收所有子進(jìn)程。
第一步:編碼代碼
文件:d10.php
<?php
use Swoole\Process;
use Swoole\Coroutine;
// 指定5個(gè)工作進(jìn)程
$pool = new Process\Pool(5);
// 設(shè)置啟用協(xié)程
$pool->set(['enable_coroutine' => true]);
/**
* onWorkerStart 子進(jìn)程啟動
* @param \Swoole\Process\Pool $pool Pool對象
* @param int $workerId WorkerId當(dāng)前工作進(jìn)程的編號,底層會對子進(jìn)程進(jìn)行標(biāo)號
**/
$pool->on("WorkerStart", function (Process\Pool $pool, $workerId) {
// 輸出當(dāng)前工作進(jìn)程
echo "Worker #{$workerId} is started\n";
// 實(shí)例化化連接redis
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
// 指定redis鍵
$key = "key1";
// 循環(huán)讀取列表數(shù)據(jù)
while (true) {
// 彈出列表最后一個(gè)元素
$msgs = $redis->brpop($key, 2);
// 元素值為空則跳過
if ( $msgs == null) {
continue;
}
// 打印獲取的值
var_dump($msgs);
echo "Processed by Worker#{$workerId}\n";
}
});
// 子進(jìn)程結(jié)束
$pool->on("WorkerStop", function ($pool, $workerId) {
echo "Worker#{$workerId} is stopped\n";
});
// 啟動工作進(jìn)程
$pool->start();
第二步:啟動Redis服務(wù)并通過客戶端寫列表數(shù)據(jù)
該案例需要php安裝redis擴(kuò)展
# 通過redis客戶端連接
./redis-cli
127.0.0.1:6379> lpush key1 'world'
復(fù)制代碼
第三步:運(yùn)行d10.php
php d10.php
第四步:查看進(jìn)程
ps aux | grep php
root 938 0.0 1.2 129164 12412 ? Ss Apr21 0:00 php-fpm: master process (/usr/local/php-8.0.1/etc/php-fpm.conf)
www 951 0.0 0.6 129164 6636 ? S Apr21 0:00 php-fpm: pool www
www 952 0.0 0.6 129164 6640 ? S Apr21 0:00 php-fpm: pool www
root 12327 0.0 1.2 126992 12800 pts/2 S+ 00:02 0:00 php d10.php
root 12328 0.0 0.7 131096 7444 pts/2 S+ 00:02 0:00 php d10.php
root 12329 0.0 0.7 131096 7448 pts/2 S+ 00:02 0:00 php d10.php
root 12330 0.0 0.7 131096 7448 pts/2 S+ 00:02 0:00 php d10.php
root 12331 0.0 0.7 131096 7448 pts/2 S+ 00:02 0:00 php d10.php
root 12332 0.0 0.7 131096 7448 pts/2 S+ 00:02 0:00 php d10.php
root 12355 0.0 0.0 112812 976 pts/3 R+ 00:09 0:00 grep --color=auto php
第五步:輸出結(jié)果
php d10.php
Worker #1 is started
Worker #2 is started
Worker #3 is started
Worker #4 is started
Worker #0 is started
array(2) {
[0]=>
string(4) "key1"
[1]=>
string(5) "world"
}
Processed by Worker#1
d10.php文件運(yùn)行后會一直處于阻塞狀態(tài)而一直讀取redis列表數(shù)據(jù),一旦Redis列表中輸出,則立刻被彈出并打印在屏幕中。
到此,相信大家對“php如何讓Swoole/Pool進(jìn)程池實(shí)現(xiàn)Redis持久連接”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)頁名稱:php如何讓Swoole/Pool進(jìn)程池實(shí)現(xiàn)Redis持久連接
URL分享:http://muchs.cn/article14/gheoge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、小程序開發(fā)、全網(wǎng)營銷推廣、微信小程序、網(wǎng)站排名、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)