目前只有对启动流程分析,后续有其他分析会持续更新
启动服务流程:
esay_swoole\easyswoole
esay_swoole\vendor\bin\easyswoole
esay_swoole\vendor\easyswoole\easyswoole\bin\easyswoole 【Caller、CommandRunner】
esay_swoole\vendor\easyswoole\command\src\Caller.php
//获取Caller对象,设置command\params\script值 用于CommandManager
command:第二个参数
script:第一个参数
params:所有参数
启动指令对应参数设置
php easyswoole server start -d
object(EasySwoole\Command\Caller)#3 (3) {
["script":"EasySwoole\Command\Caller":private]=>
string(36) "/mnt/hgfs/WWW/esay_swoole/easyswoole"
["command":"EasySwoole\Command\Caller":private]=>
string(6) "server"
["params":"EasySwoole\Command\Caller":private]=>
array(4) {
[0]=>
string(36) "/mnt/hgfs/WWW/esay_swoole/easyswoole"
[1]=>
string(6) "server"
[2]=>
string(5) "start"
[3]=>
string(2) "-d"
}
}
esay_swoole\vendor\easyswoole\easyswoole\src\Command\CommandRunner.php
//构造函数初始化添加command对象注册树[Install、Task、Crontab、Process、Server、PhpunitCommand、DocCommand]
run函数解析
public function run(CallerInterface $caller): ResultInterface
{
//启动服务前相关操作
if (is_callable($this->beforeCommand)) {
call_user_func($this->beforeCommand, $caller);
}
//清除opcache
Utility::opCacheClear();
//启动指定服务器
$msg = CommandManager::getInstance()->run($caller);
//结果和提示语对象
$result = new Result();
$result->setMsg($msg);
return $result;
}
esay_swoole\vendor\easyswoole\command\src\CommandManager.php
//指令管理类 分析输入指令启动指定服务器以及显示相关帮助指令
esay_swoole\vendor\easyswoole\easyswoole\src\Command\DefaultCommand\Server.php
//启动server服务
初始化core核心服务
定义常量,引入EasySwooleEvent
加载配置文件
临时文件和Log目录初始化
初始化initialize
注册错误回调
esay_swoole\vendor\easyswoole\easyswoole\src\Core.php
//核心服务
加载配置、初始化EasySwooleEvent、注册错误回调、创建服务、启动服务、
注册默认回调 - registerDefaultCallBack
包含onRequest事件接收请求转发
esay_swoole\vendor\easyswoole\easyswoole\src\ServerManager.php
//服务管理类 swoole服务
注册事件 esay_swoole\vendor\easyswoole\easyswoole\src\Swoole\EventRegister.php
添加子服务事件
真正启动swoole服务
esay_swoole\vendor\easyswoole\easyswoole\src\Config.php
//config配置管理类 负责加载读取配置
esay_swoole\vendor\easyswoole\easyswoole\src\Trigger.php
//异常类
esay_swoole\vendor\easyswoole\easyswoole\src\Swoole\EventRegister.php
swoole事件管理类 例如:workerStart、task等