检查连接是否可用
防止因长时间不链接而导致连接丢失的问题 MySQL server has gone away
null Driver_Database_Driver_MySQL::_check_connect( )
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');
}
}
}