我使用 MySQL PDO 来处理数据库查询等.但大多数时候,MySQL 连接消失了.所以我正在查看 PDO,它将检查数据库连接是否存在,如果它不退出,那么我需要连接数据库以继续查询执行.
I am using MySQL PDO for handling database querying and all. But most of the time, the MySQL connection is gone away. So i am looking in the PDO that will check if the db connection is exists or not and if it is not exit, then i need to connect the database to continue the query execution.
我是 MySQL pdo 的新手,我不知道如何处理这种情况.如果有人对此提出建议会更好.
I am new to the MySQL pdo and i do not know how to handling this situation. It would be better if anybody suggest on this.
我试图为同样的问题寻找解决方案,但我找到了下一个答案:
I tried to find a solution for the same problem and I found the next answer:
class NPDO {
private $pdo;
private $params;
public function __construct() {
$this->params = func_get_args();
$this->init();
}
public function __call($name, array $args) {
return call_user_func_array(array($this->pdo, $name), $args);
}
// The ping() will try to reconnect once if connection lost.
public function ping() {
try {
$this->pdo->query('SELECT 1');
} catch (PDOException $e) {
$this->init(); // Don't catch exception here, so that re-connect fail will throw exception
}
return true;
}
private function init() {
$class = new ReflectionClass('PDO');
$this->pdo = $class->newInstanceArgs($this->params);
}
}
完整故事在这里:https://terenceyim.wordpress.com/2009/01/09/adding-ping-function-to-pdo/
其他人想使用 PDO::ATTR_CONNECTION_STATUS,但他发现:$db->getAttribute(PDO::ATTR_CONNECTION_STATUS) 即使在停止 mysqld 之后,仍然继续回复Localhost via UNIX socket".
Somebody else was thinking to use PDO::ATTR_CONNECTION_STATUS, but he figured out that: "$db->getAttribute(PDO::ATTR_CONNECTION_STATUS) keeps replying "Localhost via UNIX socket" even after stopping mysqld".
这篇关于我如何 ping MySQL 数据库并使用 PDO 重新连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
PHP、MySQL PDOException 的死锁异常代码?Deadlock exception code for PHP, MySQL PDOException?(PHP、MySQL PDOException 的死锁异常代码?)
PHP PDO MySQL 可滚动游标不起作用PHP PDO MySQL scrollable cursor doesn#39;t work(PHP PDO MySQL 可滚动游标不起作用)
PHP PDO ODBC 连接PHP PDO ODBC connection(PHP PDO ODBC 连接)
使用 PDO::FETCH_CLASS 和魔术方法Using PDO::FETCH_CLASS with Magic Methods(使用 PDO::FETCH_CLASS 和魔术方法)
php pdo 只从 mysql 获取一个值;等于变量的值php pdo get only one value from mysql; value that equals to variable(php pdo 只从 mysql 获取一个值;等于变量的值)
MSSQL PDO 找不到驱动程序MSSQL PDO could not find driver(MSSQL PDO 找不到驱动程序)