PHP swoole和redis异步任务实现方法分析
发布:smiling 来源: PHP粉丝网 添加日期:2021-12-10 16:44:26 浏览: 评论:0
本文实例讲述了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几乎没有什么差别。
Tags: swoole redis php异步任务
相关文章
- ·php异步多线程swoole使用实例程序(2015-04-15)
- ·PHP程序员学习使用Swoole的理由(2018-09-14)
- ·swoole_process父子进程管道通信的代码示例(2020-01-16)
- ·swoole事件处理流程(2020-04-06)
- ·Swoole协程与传统fpm同步模式比较(2020-04-09)
- ·PHP框架Swoole定时器Timer特性分析(2021-04-05)
- ·php异步多线程swoole用法实例(2021-04-26)
- ·使用php+swoole对client数据实时更新(一)(2021-07-04)
- ·PHP+swoole实现简单多人在线聊天群发(2021-07-06)
- ·基于 Swoole 的微信扫码登录功能实现代码(2021-08-30)
- ·基于swoole实现多人聊天室(2021-10-01)
- ·swoole_process实现进程池的方法示例(2021-11-01)
- ·Swoole实现异步投递task任务案例详解(2021-11-14)
- ·PHP扩展Swoole实现实时异步任务队列示例(2021-11-17)
- ·PHP+swoole+linux实现系统监控和性能优化操作示例(2021-11-17)
- ·Swoole4.4协程抢占式调度器详解(2021-11-23)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)