wokerman的worker在什么时候连接数据库呢?如mysql

xtjsxtj

我想一个worker一个长连接的mysql
还有比如我想在worker进程一启动时就连接数据库或一个其它接口,该在什么地方连接
onstart吗?onstart是不是gateway进程也会触发啊?那该如何区分呢?

8238 1 1
1个回答

walkor

使用单例,用的时候创建连接即可。
不用在onStart时创建。

在workerman中使用单例模式(在类静态成员中保存对象/数据),在当前进程生命周期内所有请求中都是共享可用的。比如数据库单例,当使用数据库时发现数据库对象还没创建,就立即创建一个,然后保存在数据库类的静态成员中,下次再次使用数据库对象时,直接使用数据库静态成员那个数据库对象即可,这样当前进程内的所有请求就都可以复用这个数据库对象,也就是真正意义上的长连接,没有频繁的数据库连接、权限验证、断开连接等开销,非常高效。

workerman中自带mysql类,也是使用的单例模式,只有在第一次 调用Db::instance(‘db_name’)->query(sql)时才创建一个数据库连接对象,才会去连接数据库。后面再调用Db::instance(‘db_name’)就直接复用了第一次创建的数据库对象,不会在创建。

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