选择语言 :

 Driver_Database_Driver_MySQL::_check_connect

检查连接是否可用

防止因长时间不链接而导致连接丢失的问题 MySQL server has gone away

null Driver_Database_Driver_MySQL::_check_connect( )
throws
Exception
File: ./drivers/database/mysql/mysql.class.php
protected function _check_connect()
{
    # 5秒检测1次
    static $error_num = 0;
    try
    {
        $connection_id = $this->connection_id();
        $connection    = Database_Driver_MySQL::$_connection_instance[$connection_id];

        if ($connection)
        {
            $ping_status = mysql_ping($connection);
        }
        else
        {
            $ping_status = false;
        }
    }
    catch (Exception $e)
    {
        $error_num++;
        $ping_status = false;
    }

    if (!$ping_status)
    {
        if ($error_num<5)
        {
            $this->close_connect();
            # 等待3毫秒
            usleep(3000);

            # 再次尝试连接
            $this->connect();
            $error_num = 0;
        }
        else
        {
            throw new Exception('connect mysql server error');
        }
    }

}