2017 © Pedro Peláez
 

yii2-extension yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

image

anlity/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  • Monday, June 11, 2018
  • by anlityli
  • Repository
  • 1 Watchers
  • 1 Stars
  • 16 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 11 Versions
  • 23 % Grown

The README.md

yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务, (*1)

Installation

在mevyen的项目(代码中已保留原作者)的基础上加了一个定时器的功能,也就是打开swoole服务的时候开启一个定时器,来解决一些需要定时完成的任务,2018年4月9日加入了WebSocket的功能,服务端改为了WebSocket,可以监听客户端发来的消息,和向客户端发送消息。, (*2)

安装, (*3)

php composer.phar require --prefer-dist anlity/yii2-swoole-async-timer "*"

或者 添加, (*4)

"anlity/yii2-swoole-async-timer": "*"

到你的 yii2 根目录 composer.json 文件里., (*5)

如何使用

1、新增配置文件params-swoole.php, (*6)

return [
    'swooleAsyncTimer' => [
        'host'             => '127.0.0.1',      //服务启动IP
        'port'             => '9512',           //服务启动端口
        'process_name'     => 'swooleServ',     //服务进程名
        'open_tcp_nodelay' => '1',              //启用open_tcp_nodelay
        'daemonize'        => '1',              //守护进程化
        'worker_num'       => '2',              //work进程数目
        'task_worker_num'  => '2',              //task进程的数量
        'task_max_request' => '10000',          //work进程最大处理的请求数
        'task_tmpdir'      => dirname(__DIR__).'/runtime/task',      //设置task的数据临时目录
        'log_file'         => dirname(__DIR__).'/runtime/logs/swooleHttp.log', //指定swoole错误日志文件
        'client_timeout'   => '20',              //client链接服务器时超时时间(s)
        'pidfile'          => '/tmp/y.pid',          //服务启动进程id文件保存位置

        //--以上配置项均来自swoole-server的同名配置,可随意参考swoole-server配置说明自主增删--
        'sender_client'    => 'swoole',         //请求服务端的客户端方式(swoole|curl)
                'auth_key'          => 'xxxxxxxxxxxxxxx', //授权密钥
                'max_time_diff'      => 0,              //请求服务端允许的最大时间差
        'debug'            => true,             //是否开启调试模式
        'with_timer'       => true,            //是否使用定时器
        'timer_interval'   => 5000,            //定时器时间间隔
        'log_size'         => 204800000,             //运行时日志 单个文件大小
        'log_dir'          => dirname(__DIR__).'/runtime/logs',          //运行时日志 存放目录
    ]
];

2、console的main.php文件引入新增的配置文件,配置文件参考 params-swoole-default.php, (*7)

$params = array_merge(
    // ...
    require __DIR__ . '/../../common/config/params-swoole.php',
    // ...
);

3、在站点主配置文件(main.php)controllerMap, (*8)

'controllerMap' => [
    'swoole_server' => [
        'class' => 'anlity\swooleAsyncTimer\SwooleAsyncTimerController',
    ],
],

4、在站点主配置文件(main.php)中增加components, (*9)

'components' => [
    'swooleAsyncTimer' => [
        'class' => 'common\components\SwooleAsyncTimer',
    ]
]

5、从目录common/components/新建SwooleAsyncTimer类,类内容:, (*10)

<?php
namespace common\components;

use anlity\swooleAsyncTimer\SocketInterface;
use anlity\swooleAsyncTimer\SwooleAsyncTimerComponent;

class SwooleAsyncTimer extends SwooleAsyncTimerComponent implements SocketInterface {

    public function timerCallback($timerId, $server){
        // 定时器的回调逻辑
    }

    public function onWorkerStart($server, $workerId){
    }

    public function onWorkerStop($server, $workerId){
    }

    public function onOpen($fd){
        // 与客户端握手时的逻辑,可以把$fd写入到session或者缓存中
    }


    public function onClose($fd){
        // 与客户端断开连接时的逻辑
    }


    public function onMessage($fd, $data){
        // 收到客户端的消息的逻辑
    }
}

6、服务管理, (*11)

//启动
./yii swoole_server/run start

//重启
./yii swoole_server/run restart

//停止
./yii swoole_server/run stop

//查看状态
./yii swoole_server/run stats

//查看进程列表
./yii swoole_server/run list

7、执行异步任务可以, (*12)

<?php

class TestController extends Controller 
{  
    public function actionSwooleasync(){
        $data = [
            "data"=>[
                [
                    "a" => "test/mail",
                    "p" => ["测试邮件1","测试邮件2"]
                ],
                // ...
            ],
            "finish" => [
                [
                    "a" => "test/mail",
                    "p" => ["测试邮件回调1","测试邮件回调2"]
                ],
                // ...
            ]
        ];
        \Yii::$app->SwooleAsyncTimer->async(json_encode($data));
    }

    public function actionMail($a='',$b=''){
        echo $a.'-'.$b;
    }  
}

8、给客户端发送消息可以, (*13)

<?php

class TestController extends Controller 
{  
    public function actionPushMsg(){
        $fd = 1;
        $data = [];
        \Yii::$app->SwooleAsyncTimer->pushMsg($fd, $data);
    }

}

9、从服务端给webSocket客户端发送消息, (*14)

<?php

class TestController extends Controller 
{  
    public function actionPushMsg(){
        $fd = 1;
        $data = [];
        \Yii::$app->SwooleAsyncTimer->pushMsgByCli($fd, $data);
    }

}

10、无人值守, (*15)

* * * * * /path/to/yii/application/yii swoole_server/run start >> /var/log/console-app.log 2>&1

The Versions

11/06 2018

dev-master

9999999-dev https://github.com/anlityli/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  Sources   Download

BSD-4-Clause

The Requires

 

by anlity

extension yii2 swoole

11/06 2018

0.7.0

0.7.0.0 https://github.com/anlityli/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  Sources   Download

BSD-4-Clause

The Requires

 

by anlity

extension yii2 swoole

26/05 2018

0.6.3

0.6.3.0 https://github.com/anlityli/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  Sources   Download

BSD-4-Clause

The Requires

 

by anlity

extension yii2 swoole

19/05 2018

0.6.2

0.6.2.0 https://github.com/anlityli/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  Sources   Download

BSD-4-Clause

The Requires

 

by anlity

extension yii2 swoole

05/05 2018

0.6.1

0.6.1.0 https://github.com/anlityli/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  Sources   Download

BSD-4-Clause

The Requires

 

by anlity

extension yii2 swoole

05/05 2018

0.6.0

0.6.0.0 https://github.com/anlityli/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  Sources   Download

BSD-4-Clause

The Requires

 

by anlity

extension yii2 swoole

21/04 2018

0.5.1

0.5.1.0 https://github.com/anlityli/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  Sources   Download

BSD-4-Clause

The Requires

 

by anlity

extension yii2 swoole

10/04 2018

0.5.0

0.5.0.0 https://github.com/anlityli/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  Sources   Download

BSD-4-Clause

The Requires

 

by anlity

extension yii2 swoole

14/03 2018

0.3.0

0.3.0.0 https://github.com/anlityli/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  Sources   Download

BSD-4-Clause

The Requires

 

by anlity

extension yii2 swoole

14/03 2018

0.2.0

0.2.0.0 https://github.com/anlityli/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  Sources   Download

BSD-4-Clause

The Requires

 

by anlity

extension yii2 swoole

10/03 2018

0.1.0

0.1.0.0 https://github.com/anlityli/yii2-swoole-async-timer

用于异步处理任务和需要定时器完成的任务

  Sources   Download

BSD-4-Clause

The Requires

 

by anlity

extension yii2 swoole