gpt4 book ai didi

php - 重新连接 MySQL 服务器已经消失

转载 作者:可可西里 更新时间:2023-11-01 06:49:13 27 4
gpt4 key购买 nike

如何修改此类以在 MySQL 服务器消失时捕获异常并重新连接?

<?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;
}
}

最佳答案

你可能需要像这样创建你自己的类

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

EDIT 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);
}

关于php - 重新连接 MySQL 服务器已经消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6860709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com