| 
                         mysql_ping() 检查到服务器的连接是否正常。如果到服务器的连接可用,则返回true,否则返回false。 
但PDO不支持 mysql_ping()方法,因此需要自己编写代码模拟mysql_ping()方法,检查连接是否可用。
代码如下: 
getAttribute(PDO::ATTR_SERVER_INFO);
  } catch (PDOException $e) {
    if(strpos($e->getMessage(),'MySQL server has gone away')!==false){
      return false;
    }
  }
  return true;
}
?>
代码演示:
1、创建测试数据表
2、插入测试数据
mysql> select * from user; 
+----+-----------+ 
| id | name   | 
+----+-----------+ 
| 1 | fdipzone | 
| 2 | xfdipzone | 
| 3 | terry   | 
+----+-----------+
3、演示文件
db.php 
// 保存数据库连接 
private static $_instance = null;
// 连接数据库 
public static function get_conn($config){ 
if(isset(self::$_instance) && !empty(self::$_instance)){ 
return self::$_instance; 
} 
$dbhost = $config['host'];
$dbname = $config['dbname'];
$dbuser = $config['user'];
$dbpasswd = $config['password'];
$pconnect = $config['pconnect'];
$charset = $config['charset'];
$dsn = "mysql:host=$dbhost;dbname=$dbname;";
try {
  $h_param = array(
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,);
  if ($charset != '') {
    $h_param[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES ' . $charset; //設置默認編碼
  }
  if ($pconnect) {
    $h_param[PDO::ATTR_PERSISTENT] = true;
  }
  $conn = new PDO($dsn,$dbuser,$dbpasswd,$h_param);
} catch (PDOException $e) {
  throw new ErrorException('Unable to connect to db server. Error:' . $e->getMessage(),31);
}
self::$_instance = $conn;
return $conn; 
} 
// 执行查询 
public static function query($dbconn,$sqlstr,$condparam){ 
$sth = $dbconn->prepare($sqlstr); 
try{ 
$sth->execute($condparam); 
} catch (PDOException $e) { 
echo $e->getMessage().PHP_EOL; 
} 
$result = $sth->fetchAll(PDO::FETCH_ASSOC); 
return $result; 
} 
// 重置连接 
public static function reset_connect(){ 
self::$_instance = null; 
} 
} 
?> 
test.php
 
// 数据库设定 
$config = array( 
'host' => 'localhost','dbname' => 'user','user' => 'root','password' => '','pconnect' => 0,'charset' => '' 
);
 // 循环执行 
while(true){ 
// 创建数据连接 
$dbconn = DB::get_conn($config); 
// 判断连接是否有效 
$status = pdo_ping($dbconn); 
if($status){ 
echo 'connect ok'.PHP_EOL; 
}else{ 
echo 'connect failure'.PHP_EOL; 
// 重置连接
DB::reset_connect();
$dbconn = DB::get_conn($config); 
} 
// 执行查询 
$sqlstr = 'select * from user where id=?'; 
$condparam = array(mt_rand(1,3)); 
$data = DB::query($dbconn,$condparam); 
print_r($data); 
// 延时10秒 
echo 'sleep 10'.PHP_EOL.PHP_EOL; 
sleep(10); 
} 
/** 
 |