如圖:
同樣的接口請(qǐng)求前兩次都出現(xiàn)General error: 2006 MySQL server has gone away, 但實(shí)際mysql并沒有掛,其他接口也正常運(yùn)行。
報(bào)錯(cuò)的接口第三次再請(qǐng)求也正常了,這是什么原因?
大佬幫我簡(jiǎn)單看一眼,這代碼有沒有問題
public static function getInstance($config = [])
{
if (self::$instance === null) {
self::$instance = new self($config);
self::$instance->capsule = new Capsule(IlluminateContainer::getInstance());
self::$instance->config = $config;
}
return self::$instance;
}
/**
* 構(gòu)建數(shù)據(jù)庫連接
* @param int $tenantId 租戶id
* @return \Illuminate\Database\Connection
*/
public function buildConnection(int $tenantId = 0)
{
$method = config('plugin.yesgooo.dynamic-database-manager.conf.method') ?? 'header';
//如外部指定租戶直接取指定值,否則從請(qǐng)求頭部獲取當(dāng)前租戶標(biāo)識(shí),默認(rèn)0
$flag = $tenantId ?: \request()->$method(config('plugin.yesgooo.dynamic-database-manager.conf.flag'), 0);
//當(dāng)前公司數(shù)據(jù)庫名稱,如未傳公司ID取默認(rèn)配置數(shù)據(jù)庫名
$database = $flag ? config('plugin.yesgooo.dynamic-database-manager.conf.database_prefix').$flag : config('plugin.yesgooo.dynamic-database-manager.conf.default_database');
//當(dāng)前的數(shù)據(jù)庫連接名稱
$curConnect = $flag ? config('plugin.yesgooo.dynamic-database-manager.conf.conn_prefix') . $flag : 'default';
$config = $this->config ?: [
'driver' => 'mysql',
'host' => config('plugin.yesgooo.dynamic-database-manager.conf.host'),
'port' => config('plugin.yesgooo.dynamic-database-manager.conf.port'),
'database' => $database,
'username' => config('plugin.yesgooo.dynamic-database-manager.conf.username'),
'password' => config('plugin.yesgooo.dynamic-database-manager.conf.password'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
];
$defaultConnect = $this->capsule->getDatabaseManager()->getDefaultConnection();
//通過容器獲取全部數(shù)據(jù)庫連接
$allConnect = $this->capsule->getContainer()['config']['database.connections'];
//如果當(dāng)前連接還沒有,則新增連接
if(!in_array($curConnect, array_keys($allConnect))){
$this->capsule->addConnection($config, $curConnect); // TODO: Change the autogenerated stub
}
//如果默認(rèn)連接不是當(dāng)前連接,則設(shè)置成默認(rèn)連接
if($defaultConnect != $curConnect){
//斷開當(dāng)前連接 2023-12-13
$this->capsule->getDatabaseManager()->disconnect();
//重置默認(rèn)連接
$this->capsule->getDatabaseManager()->setDefaultConnection($curConnect);
}
$this->capsule->setAsGlobal();
$this->capsule->bootEloquent();
}