• 核心解读
    • 入口文件
      • 实例化
      • initialize
      • createServer
      • start
    • http调度

    核心解读

    入口文件

    EasySwoole\Core\Core

    实例化

    Core类是一个单例对象,在整个EasySwoole生命周期中,Core对象只会被实例化一次,实例化后初始化了几个框架常量:

    1. function __construct()
    2. {
    3. defined('SWOOLE_VERSION') or define('SWOOLE_VERSION',intval(phpversion('swoole')));
    4. defined('EASYSWOOLE_ROOT') or define('EASYSWOOLE_ROOT',realpath(getcwd()));
    5. defined('EASYSWOOLE_SERVER') or define('EASYSWOOLE_SERVER',1);
    6. defined('EASYSWOOLE_WEB_SERVER') or define('EASYSWOOLE_WEB_SERVER',2);
    7. defined('EASYSWOOLE_WEB_SOCKET_SERVER') or define('EASYSWOOLE_WEB_SOCKET_SERVER',3);
    8. }

    initialize

    初始化方法
    initialize方法中,主要做了以下事情:

    • 引入EasySwooleEvent.php配置文件,进行框架事件注册
    • 加载配置文件
    • 执行EasySwooleEvent.php的初始化initialize事件(可进行配置的修改,log目录等的修改,以及 类的注册)
    • 初始化临时目录和log目录
    • 注册错误回调,实现捕捉框架错误

    createServer

    创建swoole主服务
    createServer方法中,主要做了以下事情:

    • 创建swoole主服务
    • 注册主服务回调事件(根据配置的SERVER_TYPE 不同注册不同的事件)
    • 执行EasySwooleEvent.phpmainServerCreate事件(可新增回调事件,新增子服务监听等)
    • 执行额外的组件初始化(Console,Crontab,fastCache,Actor)

    start

    开启服务
    start方法中,主要做了以下事情:

    • 获取已经注册好的服务回调事件,进行事件注册
    • 获取可能在mainServerCreate新增的子服务监听回调等事件,进行子服务注册
    • 调用swoole服务start方法,服务正式启动

    在这些调用方法之中,core只作为调度方法,swoole服务创建,子服务管理,以及启动服务,都是通过EasySwoole\EasySwoole\ServerManager类进行操作可查看 Swoole实例进行详细了解

    http调度

    框架默认 为 EASYSWOOLE_WEB_SERVER类型启动,在注册主服务回调事件中,将注册onRequest事件,每次当用户使用http请求时,都将触发该事件.
    该事件主要做了以下事情

    • 把\swoole_http_request、swoole_http_response转化为PSR7的Request与response对象。
    • 执行全局事件容器中的onRequest事件
    • 对请求执行dispatch。
    • 执行全局事件容器中的afterAction事件。
    • 执行内容响应(Swoole http server write 与end)

      关于dispatch调度逻辑,可查看Http服务的URL解析规则路由章节