mysql_ping() 檢查到伺服器的連線是否正常。如果到伺服器的連線可用,則返回true,否則返回false。
但pdo不支援mysql_ping()方法,因此需要自己編寫**模擬mysql_ping()方法,檢查連線是否可用。
<?php
/** * 檢查連線是否可用
*@param link $dbconn 資料庫連線
*@return boolean
*/function
pdo_ping
($dbconn) catch (pdoexception $e)
}return
true;
}?>
create
table
`user` (
`id`
int(11) unsigned not
null auto_increment,
`name`
varchar(20) not
null,
primary
key (`id`)
) engine=innodb default charset=utf8;
insert into user(name) values('fdipzone'),('xfdipzone'),('terry');
mysql> select * from user;
+----+-----------+
| id | name |
+----+-----------+
| 1 | fdipzone |
| 2 | xfdipzone |
| 3 | terry |
+----+-----------+
db.php
<?php
// 資料庫操作類
class
db $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
if ($pconnect)
$conn = new pdo($dsn, $dbuser, $dbpasswd, $h_param);
} catch (pdoexception $e)
self::$_instance = $conn;
return
$conn;
}// 執行查詢
public
static
function
query
($dbconn, $sqlstr, $condparam) catch (pdoexception $e)
$result = $sth->fetchall(pdo::fetch_assoc);
return
$result;
}// 重置連線
public
static
function
reset_connect()}
?>
test.php
<?php
require
'db.php';
// 資料庫設定
$config = array(
'host' => 'localhost',
'dbname' => 'user',
'user' => 'root',
'password' => '',
'pconnect' => 0,
'charset' => ''
);// 迴圈執行
while(true)else
// 執行查詢
$sqlstr = 'select * from user where id=?';
$condparam = array(mt_rand(1,3));
$data = db::query($dbconn, $sqlstr, $condparam);
print_r($data);
// 延時10秒
echo
'sleep 10'.php_eol.php_eol;
sleep(10);
}/**
* 檢查連線是否可用
*@param link $dbconn 資料庫連線
*@return boolean
*/function
pdo_ping
($dbconn) catch (pdoexception $e)
}return
true;
}?>
在php cli模式下執行test.php,然後馬上執行mysql.server stop 與 mysql.server start 模擬閃斷
mysql.server
stop
shutting down mysql
.... success!
mysql.server start
starting mysql
success!
執行輸出:
connect ok
array
( [0] => array
([id] => 2
[name] => xfdipzone
))sleep 10
connect failure
array
( [0] => array
([id] => 3
[name] => terry
))sleep 10
connect ok
array
( [0] => array
([id] => 3
[name] => terry
))sleep 10
可以看到閃斷後,pdo_ping()返回false,連線失敗,然後呼叫自動重連,保證後面的查詢能繼續執行。 php PDO判斷連線是否可用的實現方法
mysql ping 檢查到伺服器的連線是否正常。如果到伺服器的連線可用,則返回true,否則返回false。但pdo不支援mysql ping 方法,因此需要自己編寫 模擬mysql ping 方法,檢查連線是否可用。如下 php 檢查連線是否可用 param link dbconn 資料庫連線 ...
Android 判斷網路連線是否可用
判斷流動網路是否開啟 param context return public static boolean isnetenabled context context log.i sjf 流動網路還未開啟 return false 判斷wifi網路是否開啟 param context return p...
判斷網路是否可用
這段 用於判斷網路是否可用,如果不可用則開啟網路設定,設定網路連線,當然也可以忽略設定,即不做處理。connectivitymanager connectmanager connectivitymanager this.getsystemservice connectivity service if...