YII2 rageframe2 添加swoole进程

将插件添加到vender文件夹里
请添加图片描述
swoole服务启动代码

composer安装

composer require tsingsun/yii2-swoole
<?php

use \tsingsun\swoole\server\Server;
use \tsingsun\swoole\server\Timer;
use \common\models\common\SwooleTaskLog;

/**
 * Created by PhpStorm.
 * User: tsingsun
 * Date: 2017/2/28
 * Time: 上午11:15
 */
defined('WEBROOT') or define('WEBROOT', __DIR__ . '/web');
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

defined('COROUTINE_ENV') or define('COROUTINE_ENV', true);

require(__DIR__ . '/../vendor/autoload.php');
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
require __DIR__ . '/../common/config/bootstrap.php';

$config1 = \yii\helpers\ArrayHelper::merge(
    require __DIR__ . '/../common/config/main.php',
    require __DIR__ . '/../common/config/main-local.php',
    require __DIR__ . '/../frontend/config/main.php',
    require __DIR__ . '/../frontend/config/main-local.php'
);


$config = [
    'class' => 'tsingsun\swoole\server\HttpServer',
//    'timeout'=>2,
    'setting' => [
        'daemonize' => 0,
        'max_coro_num' => 3000,
        'reactor_num' => 1,
        'worker_num' => 2,
        'task_worker_num' => 6,
        'pid_file' => __DIR__ . '/runtime/testHttp.pid',
        'log_file' => __DIR__ . '/runtime/logs/swoole.log',
        'debug_mode' => 1,
        'enable_coroutine' => COROUTINE_ENV

    ],
];

Server::run($config, function (Server $server) use($config1) {
    (new \yii\web\Application($config1))->run();
    $starter = new \tsingsun\swoole\bootstrap\WebApp($server);
    //初始化函数独立,为了在启动时,不会加载Yii相关的文件,在库更新时采用reload平滑启动服务器
    $starter->init = function (\tsingsun\swoole\bootstrap\BaseBootstrap $bootstrap) {
        require(__DIR__ . '/vendor/tsingsun/yii2-swoole/src/Yii.php');

//        $config = require(__DIR__ . '/config/web.php');
        //if you has local config
        $config = yii\helpers\ArrayHelper::merge(
            require(__DIR__ . '/../common/config/main.php'),
            require(__DIR__ . '/../common/config/main-local.php')
        );
        Yii::setAlias('@webroot', WEBROOT);
        Yii::setAlias('@web', '/');
        //如果需要原生的swoole Server,可以这样
        Yii::$swooleServer = $bootstrap->getServer()->getSwoole();
        $bootstrap->appConfig = $config;

    };
    $server->getSwoole()->on('WorkerStart',function(swoole_server $serv,$worker_id){
        if($worker_id === 0){
            Timer::tick(1000,function($timer_id) use ($serv) {
                
                echo '---start swoole time:'.date('Y-m-d H:i:s',time());
                $data = [1,3,2,4];
                $serv->Task($data);
                echo '---end swoole time:'.date('Y-m-d H:i:s',time()).PHP_EOL;
                

            });
        }
    });
    //如果需要swoole Server
    $server->getSwoole()->on("Task", function (swoole_server $serv, $task_id, $from_id, $data) {
        
        // echo "#{$serv->worker_id}\tonTask: [PID={$serv->worker_pid}]: task_id=$task_id, data_len=" . json_decode($data) . "." . PHP_EOL;
        $result = '';
        $data = json_decode($data,true);
        echo '---start task event '.$data.PHP_EOL;
        // dump($data);
        
        
        $serv->finish($result);
    }
    );
    $server->getSwoole()->on("Finish", function (swoole_server $serv, $task_id, $data) {
        echo "Task#$task_id finished, data_len=" . $data . PHP_EOL;
    });
    $server->bootstrap = $starter;
    $server->start();
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值