yii2-swoole

小程府 发布于2017-10-22 11:35
  • 888 人浏览

yii2 Swoole 扩展

扩展内容主要包括:
一.异步任务队列
这里根据不同的需求,我设计了三种不同的异步处理方法

  1. 方法一(可用http请求投递):
  2. Yii::$app->swoole->webTask($data);
  3. 将异步任务,以触发浏览器链接的方式执行,适用于能通过web请求来处理的小耗时任务
  4. 优点:操作简单
  5. 缺点:安全性低,任务链接要做权限处理;
  6. 稳定性较差,如果链接中有脚本错误,或连接超时,会导致任务丢失.
  7. 方法二(可用http请求投递):
  8. Yii::$app->swoole->mongodbTask($data);
  9. 将异步任务,投递到mongo中,由yii2console来执行,用来处理耗时,重要的任务
  10. 优点:稳定性好,任务队列记录到mongodb,可查找任务处理记录
  11. 缺点:需要安装mongodb,配置mongo,操作较复杂
  12. 方法三(用cli请求投递):
  13. Yii::$app->swoole->cliAsync($data);
  14. cli的形式来投递任务,适用场景较多的为计划任务,来通过yii2console来执行,同样由mongo来传递和记录任务队列

二.websocket通信
本扩展以websocket为基础服务,所以可以处理websocket的请求,多客户端连接通信,通过自定义命令来实时处理业务

三.基于websocket的实时推送
服务端有消息变更时,通过向客户端推送消息,来达到消息的同步和实时反馈``

  1. Yii::$app->swoole->pushMsg($fd,$data);

四.简单的启动/关闭/重启/状态获取命令

swoole版本要求:>=1.8.1

实现原理

适用场景

需要客户端触发的耗时请求,客户端无需等待返回结果
websocket的这种场景

安装

  1. composer require --prefer-dist xiaochengfu/yii2-swoole "*"

如何使用

安装前准备:
1.需要安装curl扩展,

  1. composer require linslin/yii2-curl "1.1.3"

2.需要安装mongodb,因为有部分异步任务是需要存储到mongodb中


1、修改common/config/params.php

  1. return [
  2. 'swooleAsync' => [
  3. 'host'=> 'ip',//服务启动IP
  4. 'port'=> '9512',//服务启动端口
  5. 'swoole_http'=> 'http://ip:9512',//推送触发连接地址
  6. 'process_name'=> 'swooleWebSocket',//服务进程名
  7. 'open_tcp_nodelay' => '1',//启用open_tcp_nodelay
  8. 'daemonize'=> false,//守护进程化
  9. 'heartbeat_idle_time' => 180,//客户端向服务端请求的间隔时间,单位秒(s)
  10. 'heartbeat_check_interval' => 120,//服务端向客户端发送心跳包的间隔时间,两参数要配合使用,单位秒(s)
  11. 'worker_num'=> '2',//work进程数目
  12. 'task_worker_num'=> '2',//task进程的数量
  13. 'task_max_request' => '10000',//work进程最大处理的请求数
  14. 'pidfile'=> Yii::getAlias('@swoole').'/yii2-swoole/yii2-swoole.pid',
  15. 'log_dir'=> Yii::getAlias('@swoole').'/yii2-swoole',
  16. 'task_tmpdir'=> Yii::getAlias('@swoole').'/yii2-swoole',
  17. 'log_file'=> Yii::getAlias('@swoole').'/yii2-swoole/swoole.log',
  18. 'log_size'=> 204800000,//运行时日志 单个文件






继续阅读

还有20%的精彩内容,登录继续阅读