workerman 平滑重启, 不理解为何无法生效
在start_api.php 中 message 通过Handler接管
$worker->onMessage = [new \Api\Handler, 'Do'];
然后在 \Api\handler
Do
方法内 使用 类似
$controller = explode('/', $request->path)[1] ?? '';
/ ** code */
$class = "\\Api\\Func\\{$controller}";
$connection->send(call_user_func([ new $class(), 'main']));
通过fileMonitor监控文件变更, 修改 \Api\Func下 文件 时 可以触发reload, 但修改的代码无效
opcache扩展问题
只有在
Worker:runAll()
执行后加载的文件才能热加载。中
new \Api\Handler
执行先于Worker:runAll()
,所以无法热加载。代码改成类似如下可以热加载。
现在就是比较奇怪, 我把整套 移到自己电脑上 最小化测试, 是可以reload的, 但是在服务器上 仍然存在问题, 不清楚到底为什么, 我再试试
解决了 opcache 扩展的问题
谢谢