PHP测试是否有远程MySQL服务器可用
我有一些使用MySQL的网站。我不是SQL专家,所以我使用简单的连接,查询等。有时(很少发生但只有数据库服务器挂起),或者我忘记打开我的家庭测试mysql。直到它再次运行,服务器挂起尝试连接,并最终发生超时错误。PHP测试是否有远程MySQL服务器可用
我尝试添加数据库服务器之前的一些测试这样的“ping”功能:
function pingDomain($domain){
$starttime = microtime(true);
$file = fsockopen ($domain, 80, $errno, $errstr, 10);
$stoptime = microtime(true);
$status = 0;
if (!$file) {
$status = -1; // Site is down
} else {
fclose($file);
$status = ($stoptime - $starttime) * 1000;
$status = floor($status);
}
return $status;
}
但无论如何也不能工作,PHP挂起。有任何想法吗?
到处找不到一个关于关于MySQL服务器可靠和简单的测试文档。我现在使用以下方法:
@$this->Base = mysqli_init();
@$this->Base->options(MYSQLI_OPT_CONNECT_TIMEOUT, 1);
@$this->Base->real_connect($host, $usuario, $senha, $bd);
比你赶上与$这个 - >碱 - > connect_error或错误$这个 - >碱 - > connect_errno,它不会因为“@”的书面符号。
您可以使用程序形式以及:
$Link = mysqli_init();
mysqli_options($Link, MYSQLI_OPT_CONNECT_TIMEOUT, 1);
$res = @mysqli_real_connect($host, $usuario, $senha, $bd);
if($res) {
$E->echop("Connected!!!");
} else {
$E->echop("Huston, we got a problem...");
}
评论和其他答案,欢迎!
简单使用mysql_ping:
<?php
set_time_limit(0);
$conn = mysql_connect('localhost', 'mysqluser', 'mypass');
$db = mysql_select_db('mydb');
/* Assuming this query will take a long time */
$result = mysql_query($sql);
if (!$result) {
echo 'Query #1 failed, exiting.';
exit;
}
/* Make sure the connection is still alive, if not, try to reconnect */
if (!mysql_ping($conn)) {
echo 'Lost connection, exiting after query #1';
exit;
}
mysql_free_result($result);
/* So the connection is still alive, let's run another query */
$result2 = mysql_query($sql2);
?>
你可能想看看这个:
+1虽然最好[mysqli :: ping()](http://php.net/manual/en/mysqli.ping.php)这些天,[mysql的扩展即将被弃用](http:// php达网络/手动/ EN/faq.databases.php#faq.databases.mysql.deprecated)。 – Orbling
它不起作用。在我读的时候,set_time_limit补充了php.ini中设置的超时时间(通常设置为30秒),所以它仍然挂在looong时间。但是我想到了这种方法:发现没有连接的快速错误。 – Gustavo
@Orbling很快?明天?下周?即使在PHP 6 mysql_connect将如果它不,我会写你自己的函数作为封装在mysqli;) – GTodorov
你期待什么行为?你正在经历什么行为?看起来这个脚本应该阻塞(挂起)10秒钟。如果您的服务器超时时间为10秒或更少,则整个脚本将超时。 –