71 lines
1.9 KiB
PHP
71 lines
1.9 KiB
PHP
<?php
|
||
/**
|
||
* Db操作
|
||
*/
|
||
|
||
namespace server\components;
|
||
use server\lib\Connection;
|
||
|
||
class Db {
|
||
|
||
private static $_instance;
|
||
private static $_reconnectNum = 3;
|
||
|
||
/**
|
||
* 获取实例
|
||
*
|
||
* @param string $configName
|
||
* @return Connection
|
||
* @throws \Exception
|
||
*/
|
||
public static function instance($configName = 'customerservice')
|
||
{
|
||
try{
|
||
global $configFile;
|
||
if (empty(self::$_instance[$configName])) {
|
||
echo date('Y-m-d H:i:s')."重新实例化MYSQL.......".PHP_EOL;
|
||
self::$_instance[$configName] = new Connection($configFile['mysql']['host'], $configFile['mysql']['port'],
|
||
$configFile['mysql']['username'], $configFile['mysql']['password'], $configFile['mysql']['dbname'], $configFile['mysql']['charset']);
|
||
}
|
||
}catch (\Exception $e){
|
||
if(self::$_reconnectNum > 0){
|
||
self::$_reconnectNum --;
|
||
usleep(500000);
|
||
if(!empty(self::$_instance[$configName])){
|
||
self::$_instance[$configName] = '';
|
||
}
|
||
return self::instance();
|
||
}else{
|
||
echo "Mysql连接超时:" . $e->getMessage() . "\n";
|
||
}
|
||
}
|
||
|
||
return self::$_instance[$configName];
|
||
}
|
||
|
||
|
||
/**
|
||
* 关闭数据库实例
|
||
*
|
||
* @param string $configName
|
||
*/
|
||
public static function close($configName)
|
||
{
|
||
if (isset(self::$_instance[$configName]) && self::$_instance[$configName] instanceof Connection) {
|
||
self::$_instance[$configName]->closeConnection();
|
||
self::$_instance[$configName] = null;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 关闭所有数据库实例
|
||
*/
|
||
public static function closeAll()
|
||
{
|
||
foreach (self::$_instance as $connection) {
|
||
if($connection instanceof Connection)
|
||
$connection->closeConnection();
|
||
}
|
||
self::$_instance = [];
|
||
}
|
||
} |