数量赋/yii2-async-worker

基于swoole编写的yii2后台任务处理

dev-master 2016-12-28 08:53 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:25:22 UTC


README

基于swoole编写的yii2后台任务处理

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一:

php composer.phar require --prefer-dist shuliangfu/yii2-async-worker "*"

或将以下内容

"shuliangfu/yii2-async-worker": "*"

添加到您的 composer.json 文件的 require 部分。

使用方法

一旦安装了扩展,只需在代码中使用即可

配置

'components' => [
    'worker' => [
            'class' => 'shuliangfu\async\AsyncWorker',
            'options' => [
                'host'              => '0.0.0.0',
                'port'              => 9510,
                'process_name'      => 'async-worker',
                'open_tcp_nodelay'  => 1,
                'daemonize'         => 1,
                'worker_num'        => 2,
                'task_worker_num'   => 2,
                'task_max_request'  => 10000,
                'pidfile'           => Yii::getAlias('@console/runtime/tmp/async-worker.pid'),
                'task_tmpdir'       => Yii::getAlias('@console/runtime/tmp/async-worker/task'),
                'log_file'          => Yii::getAlias('@console/runtime/tmp/async-worker.log'),
                'log_size'          => 204800000,
                'client_timeout'    => 30,
            ]
        ];
]

'controllerMap' => [
    'async-worker' => [
         'class' => 'shuliangfu\async\AsyncWorkerController',
    ]
]

启动服务

php yii async-worker start   #启动
php yii async-worker stop    #停止
php yii async-worker restart #重启
php yii async-worker list    #查看进程
php yii async-worker stats   #查看状态

执行后台任务

执行单个任务
Yii::$app->worker->run([
    'route' => 'async-worker/send-mail',
    'argv' => ['admin@shuliangfu.com', '我在使用您的扩展', '我在使用您的扩展,谢谢']
]);

执行多个任务
Yii::$app->worker->run([
    [
        'route' => 'async-worker/send-mail',
        'argv' => ['username@youemail.com', '我在使用您的扩展', '我在使用您的扩展,谢谢']
    ],
    ...
    ,
]);