#### 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采集進程服務