简介
有了swoole这样弱小的扩大之后,愈来愈多的框架都是基于swoole被开收回来,Swoft就是此中一款没有错的PHP框架。Swoft 是一款基于 Swoole 原生协程的注解式框架,自带常驻内存和 Swoole 其它性能的封装。swoft中内置了协程客户端。同时swoft外面有了不少新的概念,比方Aop等。
官网地点:https://www.swoft.org/
应用Swoft框架留意事项
由于Swoft是基于Swoole,以是以及一般的PHP框架仍是很纷歧样的,有些是需求留意的。
1.没有要再代码中执行sleep()和其余就寝函数,这样会招致整个过程梗阻。
2.没有要应用exit/die函数,这样会招致worker过程间接加入。
3.过程隔离需求留意的,当修正了全局变量的值,会没有失效,由于全局变量正在没有同的过程中,内存空间是隔离的。应用Swoft框架需求理解过程隔离成绩。没有同的过程中PHP变量没有是同享,即使是全局变量。假如没有同的过程需求同享数据,能够应用Redis,Mysql,音讯行列步队,文件,Swoole/Table,APCu(php自带的缓存扩大),shmget(过程通讯(IPC)同享内存)等对象。同时没有同过程的文件句柄也是隔离的,以是正在A过程创立的Socker衔接关上的文件正在B过程内是有效的。
4.过程克隆,当server启动时分,主过程会克隆以后过程状态,尔后开端过程内的数据相互自力,互没有影响。
5.没有要再管制器写基类来写公共的变量,这样会造成数据净化,当下一个申请出去仍然会申请到这个变量,由于常驻内存而且单利以是没有会开释掉。
民间文档也有提醒
Swoft框架装置
装置环境要求:
1. gcc版本年夜于等于4.8。
2. PHP版本年夜于7.1。
3. Composer担保理对象。
4. 装置Redis异步客户端hiredis,正在最新版本的Swoole4.2.6之后曾经内置了,没有需求装置。
5. Swoole扩大,这个是必需的。
6.链接迭代器依赖库pcre。
7. Swoole需求开启协程以及异步redis。
装置
git clone https://github.com/swoft-cloud/swoft cd swoft composer install cp .env.example .env #编纂 .env 文件,依据需求调整相干环境设置装备摆设
假如呈现上面谬误阐明redis扩大不,由于swoft需求redis扩大。
当然应用docker形式会愈加简略,执行上面饬令
docker run -p 18306:18306 --name swoft swoft/swoft
正在阅读器中输出 http://127.0.0.1:18306 就能够关上Swoft内陆页面。
封闭以及开启运转饬令 docker start/stop swoft
Swoft目次及文件阐明
进入容器查看swoft目次
root@880c142615c3:/var/www/swoft# tree -L 2 . |-- CONTRIBUTING.md |-- Dockerfile |-- LICENSE |-- README.md |-- README.zh-CN.md |-- app #使用目次 | |-- Annotation #界说注解相干目次| |-- Application.php | |-- Aspect | |-- AutoLoader.php | |-- Co妹妹on | |-- Console | |-- Exception | |-- Helper #助手函数量录 | |-- Http | |-- Listener #事情监听器目次| |-- Migration | |-- Model #模子、逻辑等代码目次| |-- Process | |-- Rpc #RPC效劳代码目次| |-- Task #义务送达治理目次,这里能够做异步义务或许按时器的工作 | |-- Tcp | |-- Validator | |-- WebSocket #WebSocket效劳代码目次| `-- bean.php |-- bin | |-- bootstrap.php | `-- swoft #Swoft入口文件|-- composer.cn.json |-- composer.json |-- composer.lock |-- config | |-- base.php | |-- db.php | `-- dev |-- database | |-- AutoLoader.php | `-- Migration |-- dev.composer.json |-- docker-compose.yml |-- phpstan.neon.dist |-- phpunit.xml |-- public | |-- favicon.ico | `-- image |-- resource #使用资本目次| |-- language | `-- views |-- runtime #暂时文件目次(日记、上传文件、文件缓存等)| |-- logs | |-- sessions | |-- swoft.co妹妹and | `-- swoft.pid |-- test #单位测试目次 | |-- apitest | |-- bootstrap.php | |-- run.php | |-- testing | `-- unit `-- vendor |-- autoload.php |-- bin |-- composer |-- doctrine |-- monolog |-- myclabs |-- nikic |-- phar-io |-- php-di |-- phpdocumentor |-- phpoption |-- phpspec |-- phpunit |-- psr |-- sebastian |-- swoft |-- symfony |-- text |-- theseer |-- toolkit |-- vlucas `-- webmozart
SwoftBean容器
Bean容器是Swoft的外围,每个Bean就是一个类工具的实例,容器就是一个工场来寄存以及治理Bean。正在HttpServer启动时分会扫描带有@Bean注解的类。传统的PHP是不常驻内存的,每一次申请城市从新初始化各类资本,每一个工具也要从新实例化去请求内存,解决完申请后又被耗费,非常糜费资本。而Swoft正在HttpServer启动后会将这些工具实例化并寄存正在内存中,下次申请就间接掏出应用,缩小工具创立资本的耗费。
Bean容器底层是一个BeanFactory治理容器(Container)。
Swoft注解(Annotations)机制
注解是Swoft外面不少首要性能特地是AOP,IoC容器的根底。相熟Java的冤家应该愈加理解注解。
那末注解是甚么样呢?上面是Swoft的一局部代码,正在类、办法或成员变量上方的正文局部就有注解。
namespace App\Tcp\Controller; use App\Tcp\Middleware\DemoMiddleware; use Swoft\Tcp\Server\Annotation\Mapping\TcpController; use Swoft\Tcp\Server\Annotation\Mapping\TcpMapping; use Swoft\Tcp\Server\Request; use Swoft\Tcp\Server\Response; use function strrev; /** * Class DemoController * * @TcpController(middlewares={DemoMiddleware::class}) #这个就是注解 */ class DemoController { /** * @TcpMapping("list", root=true) * @param Response $response */ public function list(Response $response): void { $response->setData('[list]allow co妹妹and: list, echo, demo.echo'); }
注解是甚么呢?有甚么作用呢?
注解实际上是经过反射把正文当成代码的一局部,PHP能够经过ReflectionClass来猎取一个类的信息,从而理解类里的信息,比方猎取类中的一切办法、成员变量,并包罗公有办法等,并依据这些信息完成一些操作。像不少PHP框架,比方laravel框架就行使PHP的反射机制来完成依赖注入。
其实注解是设置装备摆设的另外一种形式,这里注解就能够起到一个设置装备摆设作用。比方界说路由,界说设置装备摆设按时义务,权限管制等。
正在Swoft中要是应用注解,需引入相干注解(Annotation)类,且必需以 /**
开端并以 */
完结,不然会招致无奈解析!
Aop切面编程
Aop引见
1. Aspect(切面):一般为一个类,外面能够界说切入点以及告诉。
2. JointPoint(衔接点):顺序执行进程中明白的点,普通是办法的挪用。
3. Advice(告诉):Aop正在特定的切入点执行的加强解决,有before,after,afterReturning,afterThrowing,around。
4. Pointcut(切入点):就是嗲有告诉的衔接点,正在顺序中次要表现为书写切入点表白式。
Swoft新版的Aop设计建设正在PHP Parser下面。
PHP-Parser的名目主页是:https://github.com/nikic/PHP-Parser
保举教程:《php教程》
以上就是PHP之微效劳协程框架Swoft的具体内容,更多请存眷资源魔其它相干文章!
标签: php开发教程 php开发资料 php开发自学 PHP应用
抱歉,评论功能暂时关闭!