如何修改此类以捕获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
__ construct
try/except
$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)!