php如何让Swoole/Pool进程池实现Redis持久连接


本篇内容主要讲解“php如何让Swoole/Pool进程池实现Redis持久连接”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何让Swoole/Pool进程池实现Redis持久连接”吧! php 让 Swoole | Pool进程池实现Redis持久连接进程池,基于SwooleServer的Manager管理进程模块实现。可管理多个工作进程,相比 Process 实现多进程,ProcessPool 更加简单,封装层次更高,开发者无需编写过多代码即可实现进程管理功能,配合 CoServer 可以创建纯协程风格的,能利用多核 CPU 的服务端程序。Swoole进程池实现redis数据读取如下案例,通过WorkerStart启动Redis进程池,并持久读取Redis列表数据;当WorkerStop断开所有连接时回收所有子进程。第一步:编码代码文件:d10.php

set(['enable_coroutine'=>true]);

/**
*onWorkerStart子进程启动
*@paramSwooleProcessPool$poolPool对象
*@paramint$workerIdWorkerId当前工作进程的编号,底层会对子进程进行标号
**/
$pool->on("WorkerStart",function(ProcessPool$pool,$workerId){
//输出当前工作进程
echo"Worker#{$workerId}isstartedn";

//实例化化连接redis
$redis=newRedis();
$redis->pcon免费云主机域名nect('127.0.0.1',6379);
//指定redis键
$key="key1";

//循环读取列表数据
while(true){
//弹出列表最后一个元素
$msgs=$redis->brpop($key,2);
//元素值为空则跳过
if($msgs==null){
continue;
}
//打印获取的值
var_dump($msgs);
echo"ProcessedbyWorker#{$workerId}n";
}
});

//子进程结束
$pool->on("WorkerStop",function($pool,$workerId){
echo"Worker#{$workerId}isstoppedn";
});

//启动工作进程
$pool->start();

第二步:启动Redis服务并通过客户端写列表数据该案例需要php安装redis扩展

#通过redis客户端连接
./redis-cli

127.0.0.1:6379>lpushkey1'world'

复制代码第三步:运行d10.php

phpd10.php

第四步:查看进程

psaux|grepphp
root9380.01.212916412412?SsApr210:00php-fpm:masterprocess(/usr/local/php-8.0.1/etc/php-fpm.conf)
www9510.00.61291646636?SApr210:00php-fpm:poolwww
www9520.00.61291646640?SApr210:00php-fpm:poolwww
root123270.01.212699212800pts/2S+00:020:00phpd10.php
root123280.00.71310967444pts/2S+00:020:00phpd10.php
root123290.00.71310967448pts/2S+00:020:00phpd10.php
root123300.00.71310967448pts/2S+00:020:00phpd10.php
root123310.00.71310967448pts/2S+00:020:00phpd10.php
root123320.00.71310967448pts/2S+00:020:00phpd10.php
root123550.00.0112812976pts/3R+00:090:00grep--color=autophp

第五步:输出结果

phpd10.php

Worker#1isstarted
Worker#2isstarted
Worker#3isstarted
Worker#4isstarted
Worker#0isstarted
array(2){
[0]=>
string(4)"key1"
[1]=>
string(5)"world"
}
ProcessedbyWorker#1

d10.php文件运行后会一直处于阻塞状态而一直读取redis列表数据,一旦Redis列表中输出,则立刻被弹出并打印在屏幕中。到此,相信大家对“php如何让Swoole/Pool进程池实现Redis持久连接”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: Mysql聚合函数如何使用

这篇文章主要介绍了Mysql聚合函数如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql聚合函数如何使用文章都会有所收获,下面我们一起来看看吧。聚合函数用来对表中的数据进行统计和计算。users表结构如下:聚合函数是用…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/22 19:14
下一篇 02/22 19:14

相关推荐