Mysql_ping () checks to see if the connection to the server is healthy. Returns true if the connection to the server is available, otherwise false.
However, PDO does not support the mysql_ping () method, so you need to write your own code to simulate the Mysql_ping () method to check if the connection is available.
The code is as follows:
<?php/** * Check if the connection is available * @param link $dbconn database connection * @return Boolean */function pdo_ping ($dbconn) { try{ $dbco Nn->getattribute (Pdo::attr_server_info); } catch (Pdoexception $e) { if (Strpos ($e->getmessage (), ' MySQL server has gone away ')!==false) { return false;< c7/>} } return true;}? >
Code Demo:
1. Create a test data table
CREATE TABLE ' user ' (' id ' int (one) unsigned not null auto_increment, ' name ' varchar (a) NOT NULL, PRIMARY KEY (' id ')) ENGI Ne=innodb DEFAULT Charset=utf8;
2. Inserting test data
Insert into user (name) values (' Fdipzone '), (' Xfdipzone '), (' Terry ');mysql> select * from user;+----+-----------+| ID | Name |+----+-----------+| 1 | Fdipzone | | 2 | Xfdipzone | | 3 | Terry |+----+-----------+
3. Presentation files
db.php
<?php//database Operation class db{//Save database connection private static $_instance = null; Connect database 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;d bname= $dbname;"; try {$h _param = array (Pdo::attr_errmode = Pdo::errmode_exception,); if ($charset! = ") {$h _param[pdo::mysql_attr_init_command] = ' SET NAMES '. $charset;//Setting the default encoding } if ($pconnect) {$h _param[pdo::attr_persistent] = true; } $conn = new PDO ($DSN, $dbuser, $dbpasswd, $h _param); } catch (Pdoexception $e) {throw newErrorexception (' Unable to connect to DB server. Error: '. $e->getmessage (), 31); } self::$_instance = $conn; return $conn; }//Execute query 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; }//Reset connection public static function Reset_connect () {self::$_instance = null; }}?>
test.php
<?phprequire ' db.php ';//Database Settings $config = array (' host ' = ' localhost ', ' dbname ' = ' user ', ' user ' = ' = ') Root ', ' password ' = ', ' pconnect ' = 0, ' charset ' = ');//Loop execution while (true) {//create data connection $dbconn = Db::get_conn ($config); Determine if the connection is valid $status = Pdo_ping ($dbconn); if ($status) {echo ' Connect ok '. Php_eol; }else{echo ' Connect failure '. Php_eol; Reset Connection Db::reset_connect (); $dbconn = Db::get_conn ($config); }//Execute Query $sqlstr = ' SELECT * from user where id=? '; $condparam = Array (Mt_rand (1,3)); $data = Db::query ($dbconn, $sqlstr, $condparam); Print_r ($data); 10 seconds delay echo ' sleep 10 '. Php_eol. Php_eol; Sleep (10);} /** * Check if the connection is available * @param link $dbconn database connection * @return Boolean */function pdo_ping ($dbconn) {try{$dbconn->get Attribute (Pdo::attr_server_info); } catch (Pdoexception $e) {if (Strpos ($e->getmessage (), ' MySQL server has gone away ')!==false) { return false; }} return true;}? >
4. Implementation
Execute test.php in PHP CLI mode and execute Mysql.server stop and mysql.server start analog flash
Mysql.server stopshutting down MySQL .... success! Mysql.server startstarting MySQL success!
Execution output:
Connect Okarray ( [0] = = Array ( [id] = 2 [name] = Xfdipzone )) Sleep 10connect Failurearray ([ 0] = = Array ( [id] = 3 [name] = Terry )) Sleep 10connect okarray ( [0 ] = = Array ( [id] = 3 [name] = Terry )) Sleep 10
You can see the Flash, Pdo_ping () returns false, the connection fails, and then the automatic reconnection is called to ensure that subsequent queries continue to execute.
This article explains how to determine whether a connection is available through the PDO in PHP, and more about the PHP Chinese web.
Related recommendations:
Determine if the page or picture is gzip compressed via PHP
HTML5 get the current location and show examples on Baidu maps
Create a unique numbering class with the self-increment ID in PHP