#### 1、woker热重启
需要扩展inotify实现:
https://pecl.php.net/package/inotify
下载源码编译安装即可
workerStart启动之前加载的文件,就算这些文件变动了,worker重启是无效的,必须重新启动服务,重新加载这些文件。那么有哪些文件是worker启动前就已经加载到内存中的呢?可以通过Swfy::getInitIncludeFiles();获取
* http服务,参数=http
~~~
$include_files = Swfy::getInitIncludeFiles();
~~~
* websocket服务,参数=websocket
~~~
$include_files = Swfy::getInitIncludeFiles();
~~~
* rpct服务,参数=rpc
~~~
$include_files = Swfy::getInitIncludeFiles();
~~~
* udp服务,参数=udp
~~~
$include_files = Swfy::getInitIncludeFiles();
~~~
其实就是读取protocol目录下的对应的服务的includes.json文件,传入的参数就是服务目录,例如getInitIncludeFiles(),就是protocol/log目录下的includes.json
<table><tr><td bgcolor=orange>
注意:修改了protocol下的配置文件,那么就必须要重新启动服务了
</td></tr><table>
#### 2、 热更新
在protocol/config协议配置文件中直接配置使用。
```
~~~
// 热更新
'reload_conf'=>[
'enable_reload' => true, // 是否启用热更新
'after_seconds' => 3, // 多少秒后开始reload
'monitor_path' => APP_NAME // 监控目录
'reload_file_types' => ['.php','.html','.js'], // 监控需要重启文件类型
'ignore_dirs' => [], // 忽略的文件夹
'callback' => function($isReloadSuccess) { // 重启之后的回调,可以记录日志,邮件短信通知等,开发者可以在这里完成一些必要逻辑
var_dump("callback");
//var_dump($isReloadSuccess);
}
]
```
- 欢迎使用swoolefy
- 环境说明
- 开发部署
- 安装
- 创建应用
- 启动|停止服务
- nginx代理
- 创建Controller
- 应用结构
- App应用对象
- Event请求处理
- 超全局管理
- 热更新
- inotify实现worker进程热重启
- http服务
- 应用层配置
- 协议层配置
- 路由规则
- 控制器
- 数据模型
- websocket服务
- 应用层配置
- 协议层配置
- 数据封装格式
- 控制器
- 数据模型
- 二进制数据处理
- rpc服务
- 应用层配置
- 协议程配置
- 数据包协议格式
- 服务控制器
- 服务数据模型
- udp服务
- 应用层配置
- 协议层配置
- 数据包封装格式
- 控制器
- 存在问题
- 常用组件
- log
- view
- session
- cache(redis)
- db(mysql)
- mongodb
- 其他服务管理
- 自定义进程管理
- 异步任务管理
- 内存表管理
- 定时器管理
- 异常捕捉处理
- 进程池管理
- systerm采集进程服务