zoukankan      html  css  js  c++  java
  • mysql 连接闪断自动重连的方法(用在后台运行中的PHP代码)

    mysql 连接闪断自动重连的方法(用在后台运行中的PHP代码)
    当mysql断开连接 $_instance这个还是有值得 所以会报错 MySQL server has gone away 这个地方需要捕捉异常才可以或许到
    需要 清空连接 $_instance 这样就可以重新连接 就会报错了
    <pre>
    <?php
    // 数据库操作类
    class DB{

    // 保存数据库连接
    private static $_instance = null;

    // 连接数据库
    public static function get_conn($config){
    if(isset(self::$_instance) && !empty(self::$_instance)){
    return self::$_instance;
    }

    $dbhost = $config['host'];
    $dbname = $config['dbname'];
    $dbuser = $config['user'];
    $dbpasswd = $config['password'];
    $pconnect = $config['pconnect'];
    $charset = $config['charset'];

    $dsn = "mysql:host=$dbhost;dbname=$dbname;";
    try {
    $h_param = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //设置错误级别
    );
    if ($charset != '') {
    $h_param[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES ' . $charset; //设置默认编码
    }

    if ($pconnect) {
    $h_param[PDO::ATTR_PERSISTENT] = true; //是否是长连接
    }
    $conn = new PDO($dsn, $dbuser, $dbpasswd, $h_param);

    } catch (PDOException $e) {
    throw new ErrorException('Unable to connect to db server. Error:' . $e->getMessage(), 31);
    }

    self::$_instance = $conn;
    return $conn;
    }

    // 执行查询
    public static function query($dbconn, $sqlstr, $condparam){
    $sth = $dbconn->prepare($sqlstr);
    try{
    $sth->execute($condparam);
    } catch (PDOException $e) {
    echo $e->getMessage().PHP_EOL;
    self::reset_connect($e->getMessage()); // 出错时调用重置连接
    }
    $result = $sth->fetchAll(PDO::FETCH_ASSOC);
    return $result;
    }

    // 重置连接
    public static function reset_connect($err_msg){
    if(strpos($err_msg, 'MySQL server has gone away')!==false){
    self::$_instance = null;
    }
    }

    }
    ?>
    </pre>

  • 相关阅读:
    数据字典的应用实例
    数据字典动态性能表(视图)
    MySQL exists的用法介绍
    Don’t Assume – Per Session Buffers
    MySQL 5.5: InnoDB Change Buffering
    Fixing Poor MySQL Default Configuration Values
    A quest for the full InnoDB status
    MySQL : interactive_timeout v/s wait_timeout
    Mydumper & Myloader Documentation
    InnoDB Plugin文件格式(概述)
  • 原文地址:https://www.cnblogs.com/newmiracle/p/11865334.html
Copyright © 2011-2022 走看看