Closed YiwanGi closed 1 year ago
首先,全局唯一的单例注册可能在多进程的模型下没有什么意义,因为每个 Worker 进程会复制主进程的进程空间,复制后父子进程和各个 Worker 之间的静态变量、单例,都是仅限于对应进程的,fork 后不同进程内操作都是分道扬镳的。在 Worker 重启后,新的 Worker 又会以 Master 进程(主进程,以下同理)内的进程空间为基础进行复制。
如果你想使用全局唯一的单例类,可以采用以下方法:
将 config/global.php
中的 swoole
内的 worker_num
删除,将 runtime
内的 swoole_server_mode
改为 SWOOLE_BASE
。
swoole_options
内的 swoole_server_mode
和 swoole_set
下的 worker_num
。但如果你还是想在多进程的情况下在主进程创建注册一个单例类,有以下的方法:
@OnSetup
注解,这个注解绑定的方法会在框架所有初始化操作之前执行,同时也必定是在 Master 进程内。@Setup
注解,同理。
描述
rt
例子
No response