平滑重启相关

xcsoft

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扩展问题

1040 1 0
1个回答

walkor

只有在 Worker:runAll() 执行后加载的文件才能热加载。

$worker->onMessage = [new \Api\Handler, 'Do'];

new \Api\Handler执行先于Worker:runAll(),所以无法热加载。

代码改成类似如下可以热加载。

$worker->onWorkerStart = function($worker){
    $worker->onMessage = [new \Api\Handler, 'Do'];
};
  • xcsoft 2022-02-07

    现在就是比较奇怪, 我把整套 移到自己电脑上 最小化测试, 是可以reload的, 但是在服务器上 仍然存在问题, 不清楚到底为什么, 我再试试

  • xcsoft 2022-02-07

    解决了 opcache 扩展的问题

  • xcsoft 2022-02-07

    谢谢

年代过于久远,无法发表回答
🔝