ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
#### 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); } ] ```