返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php如何让Swoole/Pool进程池实现Redis持久连接
  • 697
分享到

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

2023-07-05 03:07:03 697人浏览 薄情痞子
摘要

本篇内容主要讲解“PHP如何让Swoole/Pool进程池实现Redis持久连接”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何让Swoole/Pool进程池实现Redis持久连接”吧!

本篇内容主要讲解“PHP如何让Swoole/Pool进程池实现Redis持久连接”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习php如何让Swoole/Pool进程池实现Redis持久连接”吧!

php 让 Swoole | Pool进程池实现Redis持久连接

进程池,基于Swoole\Server的Manager管理进程模块实现。可管理多个工作进程,相比 Process 实现多进程,Process\Pool 更加简单,封装层次更高,开发者无需编写过多代码即可实现进程管理功能,配合 Co\Server 可以创建纯协程风格的,能利用多核 CPU 的服务端程序。

Swoole进程池实现redis数据读取

如下案例,通过WorkerStart启动Redis进程池,并持久读取Redis列表数据;当WorkerStop断开所有连接时回收所有子进程。

编码代码

文件:d10.php

<?phpuse Swoole\Process;use Swoole\Coroutine;// 指定5个工作进程$pool = new Process\Pool(5);// 设置启用协程$pool->set(['enable_coroutine' => true]);$pool->on("WorkerStart", function (Process\Pool $pool, $workerId) {// 输出当前工作进程   echo "Worker #{$workerId} is started\n";   // 实例化化连接redis   $redis = new Redis();   $redis->pconnect('127.0.0.1', 6379);   // 指定redis键   $key = "key1";   // 循环读取列表数据   while (true) {    // 弹出列表最后一个元素       $msgs = $redis->brpop($key, 2);       // 元素值为空则跳过       if ( $msgs == null) {           continue;       }       // 打印获取的值       var_dump($msgs);       echo "Processed by Worker#{$workerId}\n";   }});// 子进程结束$pool->on("WorkerStop", function ($pool, $workerId) {   echo "Worker#{$workerId} is stopped\n";});// 启动工作进程$pool->start();

启动Redis服务并通过客户端写列表数据

该案例需要php安装redis扩展

# 通过redis客户端连接./redis-cli127.0.0.1:6379> lpush key1 'world'

复制代码

运行d10.php

php d10.php

查看进程

ps aux | grep phproot        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 wwwwww         952  0.0  0.6 129164  6640 ?        S    Apr21   0:00 php-fpm: pool wwwroot      12327  0.0  1.2 126992 12800 pts/2    S+   00:02   0:00 php d10.phproot      12328  0.0  0.7 131096  7444 pts/2    S+   00:02   0:00 php d10.phproot      12329  0.0  0.7 131096  7448 pts/2    S+   00:02   0:00 php d10.phproot      12330  0.0  0.7 131096  7448 pts/2    S+   00:02   0:00 php d10.phproot      12331  0.0  0.7 131096  7448 pts/2    S+   00:02   0:00 php d10.phproot      12332  0.0  0.7 131096  7448 pts/2    S+   00:02   0:00 php d10.phproot      12355  0.0  0.0 112812   976 pts/3    R+   00:09   0:00 grep --color=auto php

输出结果

php d10.phpWorker #1 is startedWorker #2 is startedWorker #3 is startedWorker #4 is startedWorker #0 is startedarray(2) { [0]=> string(4) "key1" [1]=> string(5) "world"}Processed by Worker#1

d10.php文件运行后会一直处于阻塞状态而一直读取redis列表数据,一旦Redis列表中输出,则立刻被弹出并打印在屏幕中。

到此,相信大家对“php如何让Swoole/Pool进程池实现Redis持久连接”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: php如何让Swoole/Pool进程池实现Redis持久连接

本文链接: https://lsjlt.com/news/349119.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php如何让Swoole/Pool进程池实现Redis持久连接
    本篇内容主要讲解“php如何让Swoole/Pool进程池实现Redis持久连接”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何让Swoole/Pool进程池实现Redis持久连接”吧!...
    99+
    2023-07-05
  • 聊聊php怎么让Swoole/Pool进程池实现Redis持久连接
    本篇文章给大家带来了关于php的相关知识,其中主要介绍了通过PHPphp让Swoole/Pool进程池实现Redis持久连接,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。php 让 Swoole | Pool进程池实现Redis持久连...
    99+
    2023-05-14
    php
  • php如何实现连接池
    本篇内容介绍了“php如何实现连接池”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是连接池在实际应用开...
    99+
    2024-04-02
  • php如何实现Redis连接与认证
    这篇文章给大家分享的是有关php如何实现Redis连接与认证的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Redis连接与认证//连接参数:ip、端口、连接超时时间,连接成功返回...
    99+
    2024-04-02
  • PHP如何解决swoole守护进程Redis假死 ,mysql断线重连问题?
    PHP如何解决swoole守护进程Redis假死 ,mysql断线重连问题? 最近公司有个项目,要举办一个线上活动,我这边负责提供接口记录用户访问记录,与操作记录,由于活动参与人数可能比较多...
    99+
    2023-09-03
    php swoole redis
  • 如何使用php实现远程连接
    本篇内容主要讲解“如何使用php实现远程连接”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用php实现远程连接”吧!用php实现远程连接的方法:首先安装SSH2模块;然后通过“ssh3_c...
    99+
    2023-06-20
  • java客户端中如何使用Jedis实现操作Redis Sentinel 连接池
    这篇文章给大家介绍java客户端中如何使用Jedis实现操作Redis Sentinel 连接池,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。pom.xml配置<dependency> <grou...
    99+
    2023-05-31
    jedis sentinel java
  • 使用SpringBoot如何实现远程连接redis服务器
    今天就跟大家聊聊有关使用SpringBoot如何实现远程连接redis服务器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用了SpringBoot的项目,在远程连接Redis服务器...
    99+
    2023-05-31
    springboot 远程连接 redis
  • 如何实现PHP连接数据库,通过面向过程方法实现最基本的增删改查操作
    如何实现PHP连接数据库,通过面向过程方法实现最基本的增删改查操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、PHP连接...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作