PHP swoole和redis异步任务实现方法分析


Posted in PHP onAugust 12, 2019

本文实例讲述了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异步任务日志

PHP swoole和redis异步任务实现方法分析

swoole异步任务日志

PHP swoole和redis异步任务实现方法分析

通过对比任务日志我们可以看到,由于swoole开了4个进程执行异步任务,所以处理异步任务的效率大概是redis的四倍,如果swoole只开一个进程的话,效率和redis几乎没有什么差别。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
解决GD中文乱码问题
Feb 14 PHP
php数组声明、遍历、数组全局变量使用小结
Jun 05 PHP
PHP数据类型的总结分析
Jun 13 PHP
curl和libcurl的区别简介
Jul 01 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
Apr 11 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
php使用pecl方式安装扩展操作示例
Aug 12 #PHP
PHP实现与java 通信的插件使用教程
Aug 11 #PHP
PHP利用DWZ.CN服务生成短网址
Aug 11 #PHP
thinkPHP和onethink微信支付插件分享
Aug 11 #PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 09 #PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 #PHP
php tpl模板引擎定义与使用示例
Aug 09 #PHP
You might like
.htaccess文件保护实例讲解
2011/02/06 PHP
php定界符
2014/06/19 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
Django的性能优化实现解析
2019/07/30 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
Python列表元素常见操作简单示例
2019/10/25 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
学校运动会霸气口号
2014/06/07 职场文书
个人自查自纠材料
2014/10/14 职场文书
个人廉洁自律总结
2015/03/06 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技