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里的$_GET数组介绍)
- php微信支付怎么做(ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解)
- php多维数组怎么转换json(php实现的数组转xml案例分析)
- php静态类和动态类的区别(PHP Trait代码复用类与多继承实现方法详解)
- php函数使用教程讲解(php函数式编程简单示例)
- phplaravel怎么优化(laravel执行php artisan migrate报错的解决方法)
- php里的fpm是什么(phpfpm的作用和用法)
- php 日志监控(php日志函数error_log用法实例分析)
- php数据判断函数有哪些(PHP判断函数是否被定义的方法)
- phpstudy不解析php代码(phpstudy伪静态设置的问题)
- php面对对象的三大特性(php中对象引用和复制实例分析)
- phpstudy服务器怎么设置(phpstudy2018 访问目录服务权限问题)
- php数组取值方法(php给数组赋值的实例方法)
- php静态变量的含义(PHP中define 与 const定义常量的区别详解)
- php array只能放一种类型的数据(浅谈PHP array_search 和 in_array 函数效率问题)
- php使用yield处理并发(Yii框架中使用PHPExcel的方法分析)
- 融入小人物的喜怒哀乐,黄渤饰演的角色为什么让人观看时欲罢不能(融入小人物的喜怒哀乐)
- 《极限挑战》深访都市夜归人,夜间打工者体验,黄磊录完憔悴了(极限挑战深访都市夜归人)
- Google 推出了一个游戏生成器,让不会编程的你也能自己设计游戏(推出了一个游戏生成器)
- 二胎家庭老大爱闹情绪,用这招很有效(二胎家庭老大爱闹情绪)
- 一个30岁男人外遇失败的全过程(一个30岁男人外遇失败的全过程)
- 《无敌破坏王2》 不聊彩蛋,聊聊我从动画里看到的现实那些事儿(无敌破坏王2不聊彩蛋)
热门推荐
- 阿里云服务器慢怎么回事(阿里云服务器进入黑洞应该怎么办?)
- python编程将一个三位数反序输出(python实现整数的二进制循环移位)
- 为什么做排版老出错(关于排版中经常见的问题及解决方法分享)
- phpstudy服务器怎么设置(phpstudy本地环境开启.htaccess伪静态方法)
- asp.net中使用ueditor
- python dict 操作(Python中dict和set的用法讲解)
- sqlserver基础数据类型(SQL Server中T-SQL 数据类型转换详解)
- 使用canvas的好坏(关于canvas绘制模糊问题的解决方法)
- sql server清理日志(SQL Server 2008 清空删除日志文件瞬间缩小日志到几M)
- laravel如何使用预处理(Laravel项目中timeAgo字段语言转换的改善方法示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9