phpredis怎么实现任务(PHP swoole和redis异步任务实现方法分析)
类别:编程学习 浏览量:2575
时间:2021-11-03 15:30:12 phpredis怎么实现任务
PHP swoole和redis异步任务实现方法分析本文实例讲述了PHP swoole和redis异步任务实现方法。分享给大家供大家参考,具体如下:
redis异步任务
interface.php
|
<?php for ( $i =0; $i <100; $i ++){ $msg = "zhezhao[" . $i . "]" ; $redis = new Redis(); $redis ->connect( "127.0.0.1" ); $redis ->publish( "test" , $msg ); $redis ->close(); } |
handler.php
|
<?php $redis = new Redis(); $redis ->connect( "127.0.0.1" ); $redis ->subscribe( array ( "test" ), 'handleFun' ); function handleFun( $redis , $chan , $data ) { write( $data ); } function write( $data ){ $path = "/tmp/mailList-redis.log" ; $str = "[" . date ( "Y-m-d H:i:s" ). "]" . $data ; $str .= PHP_EOL; file_put_contents ( $path , $str ,FILE_APPEND); } |
swoole异步任务
interface.php
|
<?php for ( $i =0; $i <100; $i ++){ $msg = "zhezhao[" . $i . "]" ; $client = new swoole_client(SWOOLE_SOCK_TCP); $client ->connect( '127.0.0.1' , 9501, 0.5); $client ->send( $msg ); $client ->close(); } |
handler.php
|
<?php $serv = new swoole_server( "127.0.0.1" , 9501); $serv ->set( array ( 'task_worker_num' => 4)); $serv ->on( 'receive' , function ( $serv , $fd , $from_id , $data ) { $task_id = $serv ->task( $data ); }); $serv ->on( 'task' , function ( $serv , $task_id , $from_id , $data ) { handle( $data ); $serv ->finish( $data ); }); $serv ->start(); function handle( $data ){ sleep(2); mailLog( "Send Mail successfully to $data" ); } function mailLog( $str ){ $path = "/tmp/mailList.log" ; $str = "[" . date ( "Y-m-d H:i:s" ). "]" . $str ; $str .= PHP_EOL; file_put_contents ( $path , $str ,FILE_APPEND); } |
比较
redis异步任务日志
swoole异步任务日志
通过对比任务日志我们可以看到,由于swoole开了4个进程执行异步任务,所以处理异步任务的效率大概是redis的四倍,如果swoole只开一个进程的话,效率和redis几乎没有什么差别。
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/koastal/article/details/52869140
您可能感兴趣
- php单例模式教程学习(PHP下用Swoole实现Actor并发模型的方法)
- php数据库怎么获得表单(php如何把表单内容提交到数据库)
- 排序算法口诀php(PHP快速排序算法实现的原理及代码详解)
- 宝塔面板php能切换吗(BT宝塔面板更换网站PHP版本)
- php怎么根据字符串长度设置(php常用字符串长度函数strlen与mb_strlen用法实例分析)
- centos安装php5.6(Centos7 Yum安装PHP7.2流程教程详解)
- 织梦cms漏洞怎么解决(织梦cms、帝国cms、PHPcms优缺点解析)
- php设置上传文件代码(PHP大文件切割上传并带进度条功能示例)
- tp5微信支付接口开发案例(PHP实现的微信APP支付功能示例基于TP5框架)
- thinkphp5表单系统(thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例)
- php中数组使用技巧(php常用经典函数集锦数组、字符串、栈、队列、排序等)
- php生成md5(php进行md5加密简单实例方法)
- php7.4类型属性实例详解(PHP 7.4中使用预加载的方法详解)
- php类的属性和方法(PHP进阶学习之反射基本概念与用法分析)
- php简单定时执行任务(php实现 master-worker 守护多进程模式的实例代码)
- php运算符与操作符(php中的buffer缓冲区用法分析)
- 赢麻了 富士公布2021年度财报 营利同比增长240(富士公布2021年度财报)
- 医事文化谈屑 | 古人的名 字 号(医事文化谈屑古人的名)
- ()
- 网友很惭愧,自己写了很多年的字,到头来还不如一名小学生写的好(自己写了很多年的字)
- 中华第一楷 张瑞龄 86岁高龄,苦练楷书71年,一幅字卖593万(中华第一楷张瑞龄)
- 冯骥才 年意(冯骥才年意)
热门推荐
- h5页面快速制作方法(h5网页水印SDK的实现代码示例)
- apache配置讲解(apache中封IP的实现方法)
- tomcat怎么知道访问servlet(详解从源码分析tomcat如何调用Servlet的初始化)
- python3 怎么查看函数用法(Python3 max函数基础用法)
- pyqt5界面绘图(PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形)
- docker进入容器的方法(docker容器里面的root权限获取方法)
- 云web应用防火墙(几款免费web应用防火墙云waf介绍及测评)
- pythonlambda是什么函数(Python之lambda匿名函数及map和filter的用法)
- virtualbox 虚拟centos使用方法(Virtualbox 安装centos7虚拟机的图文教程详解)
- python字符串找一个最大字符(Python查找最长不包含重复字符的子字符串算法示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9