GatewayWorker连接多个数据库,会自动识别吗?

xiajin

在onMessage时,根据客户端传的wid连接不同的数据库

$config = ;

global $dbc;//
$dbc = new \Workerman\MySQL\Connection(
    $config,
    $config,
    $config,
    $config,
    $config,
    $config
);我的问题是,当发生onClose事件时,我调用上面的全局变量$dbc,当前$dbc能智能的识别到是属于用户对应的库吗?因为我需要维护多个库里的用户在线状态。
1939 1 0
1个回答

six

全局变量重复赋值会覆盖,如果onClose之前$dbc被重新赋值过,那么onClose可能不是这个用户之前连接的数据库。 
 
我的想法是onWorkerStart初始化多个global的数据库连接,
$db1 = new(数据库1配置);
$db2 = new(数据库2配置);
. . .
在onMessage里记录下这个用户所用的数据库是哪个,onClose的时候去找对应的$dbx实例操作
 

  • xiajin 2019-08-27

    我这边业务连接的数据库配置是N个,不确定,所以需要动态,目前感觉是数据库连接变量$dbc

    被覆盖,导致状态没有发生变化,在我本机测,倒是正常的,因为也就我一个设备。

    我现在弄的就是在onClose重新获取库,或者通过接口请求改变,我选择了前者

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