Swoft入门及技术指南

初识Swoft


参考素材
swoft官网:http://swoft.org/
在线官方文://档:https://doc.swoft.org

http://swoft.org/docs
参考文档:

最新版本

目前最新版本2.0.x


辅助工具
 

安装Swoft

使用Composer安装

安装composer,参见:https://blog.csdn.net/yan_dk/article/details/90228559

 composer create-project swoft/swoft swoft2

启动运行Swoft

Swoft入门及技术指南_第1张图片

Swoft运行模式

参见:谈网络通信处理的原理的演进及编程实现详解 https://blog.csdn.net/yan_dk/article/details/89520632

传统PHP-Fpm 模式

传统 Nginx + PHP-Fpm 模式的配合已经运行得足够好,但是由于php-fpm本身是同步阻塞进程模型,在请求结束后释放所有的资源(包括框架初始化创建的一系列对象,导致PHP进程空转(创建<-->销毁<-->创建)消耗大量的CPU资源,从而导致单机的吞吐能力有限。请求夯住,会导致 CPU 不能释放资源, 大大浪费了 CPU 使用率。

基于Swoole扩展--Swoft

Swoft是首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM,全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield, 有类似 Go 语言的协程、灵活的注解、强大的全局依赖注入容器、灵活强大的 AOP、标准的 PSR 规范实现等等,可以用于构建高性能的Web系统、API、中间件、基础服务等等。

Swoft生命周期

 通过了解swoft生命周期,运行模式能够更好的有利于利用swoft框架的开发,参考

官方文档,并且带着大家简单阅读下源码了解下运行机制。

  1. 首先会调用相关处理器做相关的初始化工作

ENV环境文件初始化

注解信息扫描收集

配置初始化

注册类到bean容器当中

收集事件监听器

启动console控制台启动相应的服务

Swoft入门及技术指南_第2张图片

 


class SwoftApplication implements SwoftInterface, ApplicationInterface{
...
protected function processors(): array
    {
        return [
            new EnvProcessor($this),
            new ConfigProcessor($this),
            new AnnotationProcessor($this),
            new BeanProcessor($this),
            new EventProcessor($this),
            new ConsoleProcessor($this),
        ];
    }
...
}

 

2、注解信息扫描收集

      在swoft当中大量使用了注解,从路由的配置到中间件配置等都依赖注解机制,所以注解需要在服务启动之前扫描到配置了注解的类,收集注解信息。

class AnnotationProcessor extends Processor{
...
// Find AutoLoader classes. Parse and collect annotations.
        AnnotationRegister::load([
            'inPhar'               => \IN_PHAR,
            'basePath'             => $app->getBasePath(),
            'notifyHandler'        => [$this, 'notifyHandler'],
            'disabledAutoLoaders'  => $app->getDisabledAutoLoaders(),
            'disabledPsr4Prefixes' => $app->getDisabledPsr4Prefixes(),
        ]);
...
}

 持续完善,待续...

你可能感兴趣的:(基础框架技术)