+
50
-

swoole重启工作进程$server->reload()不起作用?

swoole重启工作进程$server->reload()不起作用?

php代码修改了,执行了$server->reload()为啥不起作用?

网友回复

+
1
-

可能是下面几个问题导致:

1、Swoole\Server->reload() 方法可以安全地重启所有 Worker 进程或者仅 Task Worker 进程,取决于 $only_reload_taskworkrer 参数的值。如果该参数为 false(默认值),将会重启所有 Worker 进程;如果为 true,则只重启 Task Worker 进程。

2、平滑重启功能主要用于重新加载在 Worker 进程中运行时动态 include/require 的 PHP 文件。这意味着 onWorkerStart 或 onReceive 回调中 include/require 的文件会在 reload 操作后重新加载。‘’

3、如果某些 PHP 文件是在 Server 启动之前就已经加载的(例如在主服务器脚本中直接 include/require 的文件),那么它们将无法通过平滑重启来更新。这些文件包括了 server 启动时已经载入内存的配置文件或者代码库。

4、关于 Swoole 服务器的配置(通过 $serv->set() 方法设置的参数),修改这些参数配置项后需要关闭并重启整个 Server 才能生效。这些参数的变更不能通过平滑重启来应用。

5、平滑重启可以通过编程方式调用 reload() 方法来实现,也可以通过在命令行执行 kill -USR1 [Master Process PID] 命令来实现。这两种方式都可以实现不中断服务的情况下重载 Worker 进程的代码。
我知道答案,我要回答