SwooleX介绍
SW-X:SwooleX,基于Swoole 4.5.0+ 原生开发的一个高性能、便捷开发框架,内置常驻内存,注解路由,连接池,不依赖传统的 PHP-FPM,全异步非阻塞 IO
实现。
经过框架的路由转发,实现;逻辑层面向传统MVC模式开发,便于刚接触Swoole的PHPer可以快速上手,局部的注解依赖实现了Ioc、AOP、Route绑定等等,可以用于构建高性能的Web系统、API、中间件、基础服务等等。
<?php
// +----------------------------------------------------------------------
// | 示例控制器
// +----------------------------------------------------------------------
// | Copyright (c) 2018 https://www.sw-x.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 小黄牛 <1731223728@qq.com>
// +----------------------------------------------------------------------
namespace app\controller;
use x\Controller;
/**
* Ioc注入需要是public类型的,否则无法正常注入
* @Ioc(class="x\Db", name="Db")
* @AopBefore(class="app\aop\Demo", function="before")
* @AopAfter(class="app\aop\Demo", function="after")
* @AopAround(class="app\aop\Demo", function="around")
* @AopThrows(class="app\aop\Demo", function="throws")
* @Controller(prefix="index")
*/
class Index extends Controller
{
/**
* 这是一个允许被外部访问的控制器,路由为:index/index
* @RequestMapping(route="/index", method="GET", title="主页控制器")
* @Param(name="username", type="string", empty="true", tips="请输入用户名")
* @Param(name="password", value="123456", type="string", empty="true", tips="请输入登录密码")
* @Param(name="id", type="int|string", value="1", empty="true", min="10", max="20", chinese="true", tips="这是一条全参数支持的Param注解", callback="\lifecycle\annotate_param")
* @Ioc(class="\x\Db", name="Db")
* @TestCase(class="\other\testcase\index\test", title="用例一")
* @TestCase(class="\other\testcase\index\test2", title="用例二")
* @Test(msg="我是自定义的注解,你可以自己定义注解支持哦")
*/
public function index() {
return $this->fetch('SW-X:Hello Word!');
}
/**
* 这是一个不允许被外部访问的控制器
* @onRoute
*/
public function test() {
return $this->fetch('No Route');
}
}
协程框架
SW-X 是基于 Swoole 原生协程的注解式框架,自带常驻内存以及 Swoole 其它功能的封装。
注解编程
框架实现了逻辑层的注解绑定,支持Ioc、AOP、Route等多种注解,并支持开发者实现自定义注解标签,可以在不改变实例内部的情况下,对实例的行为和初始化进行控制。
单元测试
SW-X内置的注解式单元测试,可以有效的将DAO数据隔离,实现了DAO无污染的细化单元测试用例。
数据库
数据提供ORM支持,数据库的封装高度兼容 ThinkPHP5.x,方便Phper 快速切换到 SW-X。
连接池
框架自带 Mysql/Redis 高效连接池,且实现所有连接断线重连。开发者不用关心连接池,相应组件已经实现。
RPC服务
SW-X的RPC服务分为RpcServer、RpcClient和RpcWeb服务中心三大组件。框架提供了完整的RPC服务,并封装了FPM模式下可直接使用的RpcClient客户端,可以优雅高效的使用Rpc服务。
AB压力测试
测试环境为:4核4G+CentOS7.6环境。
指令:ab -c 200 -n 200000 -k http://127.0.0.1:9502/
