1.修改配置文件

  • 创建一个数据库,修改config/database.php文件中的数据库配置
'default' => [

            "driver" => "pdo_mysql",

            "host" => "127.0.0.1",

            "port" => "3306",

            "dbname" => "Group",

            "user" => "cm",

            "password" => "123",

            "charset" => "utf8",
        ],
  ...
  • 开启config/database.php文件中的cache为redis,修改你的redis配置
//redis null
'cache' => 'redis',

'redis' => [

    'default' => [
        'host' => '127.0.0.1',
        'port' => 6379,
        'prefix' => 'group_',
        'auth' => '',
        //normal 正常| persistence 持久化
        'connect' => 'persistence',
        ],

],
  • 初始化数据
//进入项目根目录,执行以下命令
app/console sql:migrate

2.测试Cron,定时任务

//进入项目根目录,执行以下命令
app/cron start
查看runtime下的cron目录,会发现cron已经启动。测试任务会每分钟向数据库User表中插入10条数据

3.测试Queue,队列任务

  • 启动队列服务beanstalkd
sudo beanstalkd -l 127.0.0.1 -p 11300 -b /var/www/ &
  • 将config/cron.php中注释的initUserForQueue任务打开
<?php
return [

    //是否为守护进程
    'daemon' => true,

    'cache_dir' => 'runtime/cron',

    'class_cache' => 'runtime/cron/bootstrap.class.cache',

    //log路径
    'log_dir' => 'runtime/cron',

    //每个定时任务执行到达该上限时,该子进程会自动重启,释放内存
    'max_handle' => 30,

    //定时器轮询周期,精确到毫秒
    'tick_time' => 1000,

    'job' => [

        [
            'name' => 'initUser',//任务名
            'time' => '*/1 * * * *',//定时规则 分 小时 天 周 月
            'command' => 'src\Web\Cron\InitUser',//执行的类库
        ],

        // [
        //     'name' => 'initUserForQueue',//任务名
        //     'time' => '*/2 * * * *',//定时规则 分 小时 天 周 月
        //     'command' => 'src\Web\Cron\initUserForQueue',//执行的类库
        // ],
    ],
];
  • 重启cron服务
//进入项目根目录,执行以下命令
app/cron restart
此时,每两分钟,cron会向数据库user表中插入300条数据,并向队列中写入修改用户密码的任务。
  • 配置config/queue.php,启动队列服务
//进入项目根目录,执行以下命令
app/queue start
  • 查看队列执行结果。打开数据库,user表用户的密码都被改成了password开头的字符串。
  • 推荐队列图形化管理工具beanstalk_console

3.测试RPC

  • 修改config/rpc.php
  • 启用config/app.php 中的serviceProviders里面的RpcServiceProvider
  • 启动rpc server
//进入项目根目录,执行以下命令
服务启动 php rpc_server.php &
服务热重启 php rpc_server.php -s reload
  • 修改src/Web/Controller/Home/DefaultController
<?php

namespace src\Web\Controller\Home;

use Controller;

//请继承Controller
class DefaultController extends Controller
{
    //一个action 与route对应
    public function indexAction()
    {    
        dump(\Rpc::call('User:User', 'getUser', [1]));

        dump(\Rpc::service('User:User')->getUser(1));

        //渲染模版 模版的启始路径可在config的view.php配置
        return $this -> render('Web/Views/Default/index.html.twig');
    }
}
  • 进入框架首页,查看运行结果

4.测试Async

  • 修改config/async.php
  • 启动async server
//进入项目根目录,执行以下命令
app/async user_server

//注意如果要开启守护进程模式,不要设置swoole config的daemonize为true(相对路径会出错),应该如下:
app/async user_server &
  • cli,模拟client测试
//执行查看返回结果
php src/Async/User/clent.php
  • 网页端测试修,改src/Web/Controller/Home/DefaultController
<?php

namespace src\Web\Controller\Home;

use Controller;

//请继承Controller
class DefaultController extends Controller
{
    //一个action 与route对应
    public function indexAction()
    {    
        $server = 'user_server'; //config配置的serverName
    $cmd = "getUserInfo"; // 传给server的指令
    $data = [1,2,3,4,5,6,7,8,9,10]; // 数据
    $needRecvData = true; //默认为true,false的话server端不会返回数据
    $users = \Async::call($server, $cmd, $data, $needRecvData);
        dump(json_decode($users, true));
        //渲染模版 模版的启始路径可在config的view.php配置
        return $this -> render('Web/Views/Default/index.html.twig');
    }
}
  • 进入框架首页,查看运行结果

results matching ""

    No results matching ""