php - 如何在 PHP 中启用数据库自​​动重新连接?

标签 php mysql

<分区>

数据库是MYSQL

最佳答案

有时当你的MySQL连接打开时间过长,当没有查询的时间超过my.cnf中的wait_timeout值时,与DB的连接将被丢弃。您将收到“MySQL 服务器已消失”超时错误。

这就是我在代码中实现自动重新连接的方式:

class databaseClass {
    var $conn;
    var $db;

    public function __construct() {
        $this->connect();
    }

    public function connect() {
        $this->conn = mysql_connect(DB_HOST, DB_USER, DB_PASS);
        $this->db = mysql_select_db(DB_NAME, $this->conn);
    }

    public function disconnect() {
        mysql_close($this->conn);
    }

    public function reconnect() {
        $this->disconnect();
        $this->connect();
    }

    public function queryCompanyExist($company) {
        //auto reconnect if MySQL server has gone away
        if (!mysql_ping($this->conn)) $this->reconnect();

        $query =  "SELECT name FROM company WHERE name='$company'";
        $result = mysql_query($query);
        if (!$result) print mysql_error() . "\r\n";
        return mysql_fetch_assoc($result);
    }
}

有关 mysql_ping 的更多信息,请参阅此处

关于php - 如何在 PHP 中启用数据库自​​动重新连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982442/

相关文章:

javascript - 必须单击提交按钮两次才能提交表单 - Java 脚本修复不起作用

php - 如何将用户从下拉选择框列表中选择的选项的值存储到 mysql 数据库中?

php - 在 codeigniter 中加入两个表

mysql - 我如何使用 Ebean createSqlQuery 在列表中进行选择

php - 我如何定义 if 条件来检查 array_key 长度是否=13?

php - 在返回给用户之前如何处理所有 php 数据?

php - 似乎无法从 PHP date() 中转义字符;

php - 在数据库中搜索具有不同书写或拼写的单词

mysql - 如何从codeigniter中的mysql列值中删除前导零

php - 递归检查数据库中 child 的 parent