🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 一、单一应用对象 swoolefy的大致工作流程分为两部分: #### 1、启动流程 a. 首先是启动服务,将会加载vendor下的autoload.php的自动加载文件,自定义的autoloader.php的自动加载文件,完成命名空间的注册,加载swoolefy底层必要常量 b. 根据不同的服务创建不同的应用服务器,判断当前环境是否满足条件,然后根据协议层的config.php配置文件在各个进程启动时设置进程名称,执行启动的初始化。 #### 2、请求处理流程: a. 接受请求,应用单例执行boostrap引导过程,设置环境,初始化判断等 b. 根据不同服务的路由规则,判断类文件是否存在,创建一个控制器实例,然后智能调度 c. 制器实例执行_beforceAction操作,然后执行action操作 d. 视图渲染与response e. 制器实例执行_afterAction操作销毁类静态变量或者初始化化,应用单例执行end操作,注册的钩子函数等销毁worker进程产生的全局变量或者类静态变量 ## 2、启动时自动创建服务对应的协议层 在每个不同的的服务启动时,将会创建对应服务目录,(例如上面章节启动http的服务时,将会自动在project的目录下创建protocol/App目录)目录将包含几个文件 * http服务(protocol/App) ~~~ protocol/App |----log |--includes.json |--log.txt |--server.pid |----config-dev.php |----config-gra.php |----config-gra.php ~~~ * websocket服务(protocol/websocket) ``` |----log |--includes.json |--log.txt |--server.pid |----config-dev.php |----config-gra.php |----config-gra.php ``` 应用目录下的WebsocketEventServer.php这个文件是抽象Event的回调处理类,与底层的服务解耦,在实际业务中,我们可能需要在回调函数中做一些处理,默认不做处理也即可使用 * rpc服务(protocol/rpc) ``` |----log |--includes.json |--log.txt |--server.pid |----config-dev.php |----config-gra.php |----config-gra.php ``` 应用目录下的RpcServer.php这个文件是抽象Event的回调处理类,与底层的服务解耦,在实际业务中,我们可能需要在回调函数中做一些处理,默认不做处理也即可使用 * Udp服务(protocol/udp) ~~~ |----log |--includes.json |--log.txt |--server.pid |----config-dev.php |----config-gra.php |----config-gra.php ~~~ 应用目录下的UdpEventServer.php这个文件是抽象Event的回调处理类,与底层的服务解耦,在实际业务中,我们可能需要在回调函数中做一些处理,默认不做处理也即可使用 对于抽象Event的回调处理类,将在下一节Event请求处理中说到