编程技术网

关注微信公众号,定时推送前沿、专业、深度的编程技术资料。

 找回密码
 立即注册

QQ登录

只需一步,快速开始

极客时间

在MySQL服务器上重新连接已消失:Reconnecting on MySQL Server Has Gone Away

TravisThomas mysql 2022-5-11 10:27 6人围观

腾讯云服务器
在MySQL服务器上重新连接已消失的处理方法

如何修改此类以捕获MySQL Server离开的异常并重新连接?

How can I modify this class to catch exception where MySQL Server Goes Away, and reconnect?

<?php class DBConn { private $conn; public function __construct( $persistent = false ) { try { $this->conn = new PDO( "mysql:host=localhost;dbname=test", 'test', "hoollaahaoo" ); $this->conn->exec( "SET CHARACTER SET utf8" ); $this->conn->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC ); if ( $persistent ) $this->conn->setAttribute( PDO::ATTR_PERSISTENT, true ); } catch( PDOException $e ) { return $e->getMessage(); } } public function getConn() { return $this->conn; } } 

问题解答

您可能需要制作自己的此类课程

you probably will need to make your own class like this one

  1. __ construct
  2. 中删除 try/except
  3. 然后像这样连接到您的数据库:
$conn = null;
$limit = 10;
$counter = 0;
while (true) {
  try {
    $conn = DBConn();
    break;
  }
  catch (Exception $e) {
    $conn = null;
    $counter++;
    if ($counter == $limit)
      throw $e;
  }

}

编辑1 :

但是如果您说您的服务器不可用....那么可能是这样

but if you say that your server goes away.... then may be smth like this

protected function _connect( $persistent = false ) { $conn = null; $limit = 10; $counter = 0; while (true) { try { $this->conn = new PDO( "mysql:host=localhost;dbname=test", 'test', "hoollaahaoo" ); $this->conn->exec( "SET CHARACTER SET utf8" ); $this->conn->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC ); if ( $persistent ) $this->conn->setAttribute( PDO::ATTR_PERSISTENT, true ); } catch (Exception $e) { $conn = null; $counter++; if ($counter == $limit) throw $e; } } public function __construct( $persistent = false ) { $this->_connect($persistent); } 

这篇关于在MySQL服务器上重新连接已消失的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程技术网(www.editcode.net)!

腾讯云服务器 阿里云服务器
关注微信
^