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
您可能感兴趣
- thinkphp框架详解(thinkphp3.2框架中where条件查询用法总结)
- phpstudyv8.0部署多站点(phpstudy v8.1 全站301重定向设置教程)
- php怎么判断是否有session(PHP中Session ID的实现原理实例分析)
- php try catch能捕获致命错误吗(php异常处理捕获错误整理)
- dedecms的dedesql.class.php on line 489错误的解决方法(dedecms的dedesql.class.php on line 489错误的解决方法)
- js和php加密(RSA实现JS前端加密与PHP后端解密功能示例)
- php实用工具(php常用的工具开发整理)
- php怎么设计状态模式(php设计模式之观察者模式定义与用法经典示例)
- 自己在做项目过程中的php知识(PHP+Oracle本地开发环境搭建方法详解)
- php7处理方案(PHP7 安装event扩展的实现方法)
- php实战小实例(php实现推荐功能的简单实例)
- php依赖注入和控制反转的区别(php反射学习之依赖注入示例)
- php怎样创建新文件详情(php文件后缀不强制为.php的实操方法)
- php工作原理及功能(php设计模式之适配器模式原理、用法及注意事项详解)
- php怎么引用文件(php引用和拷贝的区别知识点总结)
- php性能优化的思路和步骤(FastCGI轻松搞定IIS7.5+PHP5.6.0环境)
- 保温好 容量大 颜值高 保温杯你给娃娃买对了吗(保温好容量大颜值高)
- 《道德经》 人生避开骄狂,才能免去祸患(道德经人生避开骄狂)
- 郭麒麟(郭麒麟)
- 古人十句 戒骄 名言,醍醐灌顶,受益匪浅(古人十句戒骄名言)
- 《道德经》:功成不局,泰而不骄(道德经:功成不局)
- 每日一典 过江之鲫(每日一典过江之鲫)
热门推荐
- mysql查询语法总结(MySQL全面瓦解之查询的过滤条件详解)
- 在vs中设置Javascript的智能提示
- react 封装下拉选择框(React鼠标多选功能的配置方法)
- 常见跨浏览器事件的解决方法
- 如何清除mysql的binlog
- docker启动sqlserver(用docker运行postgreSQL的方法步骤)
- html5css3旋转特效效果(一款利用html5和css3实现的3D立方体旋转效果教程)
- css3动画平移代码(利用CSS3实现炫酷的飞机起飞动画)
- python 循环遍历新方法(python for 循环获取index索引的方法)
- python3yield使用教程(python中yield的用法详解——最简单,最清晰的解释)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9