kefu/server/components/Db.php

71 lines
1.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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 = [];
}
}