基本上在伪代码我正在寻找类似如何检查PHP是否已连接到数据库?
if (connected_to_any_database()) {
// do nothing
}
else {
mysql_connect(...)
}
如何实现
connected_to_any_database()
基本上在伪代码我正在寻找类似如何检查PHP是否已连接到数据库?
if (connected_to_any_database()) {
// do nothing
}
else {
mysql_connect(...)
}
如何实现
connected_to_any_database()
您是否尝试过mysql_ping()?
检查与服务器的连接是否正常。如果发生故障,则尝试自动重新连接。
另外,第二(不可靠)的方法是:
$link = mysql_connect('localhost','username','password');
//(...)
if($link == false){
//try to reconnect
}
更新:从PHP 5.5起,使用mysqli_ping()代替。
更新:使用PHP 5.5开始,使用['mysqli_ping() '](http://www.php.net/manual/en/mysqli.ping.php) – 2014-05-06 18:10:15
@AlvinK。如果我使用mysql_ping()显示我有连接,但是当我使用@mysqli_ping()时显示我不喜欢没有关系,我的意思是什么?吨。我正在使用xampp。显然我的PHP代码工作在其他计算机上,但不是在我的 – 2015-02-11 12:23:40
@PankajNimgade:似乎是一个库或配置问题,你是否尝试重新安装另一个版本的xampp?甚至nginx + php5-fpm?打开'--verbose'选项,用php-CLI运行脚本。 – 2015-02-11 17:37:27
// Earlier in your code
mysql_connect();
set_a_flag_that_db_is_connected();
// Later....
if (flag_is_set())
mysql_connect(....);
尝试使用PHP的mysql_ping功能:
echo @mysql_ping() ? 'true' : 'false';
您将需要预先设置“@”来假设您将获得用于运行此功能的MySQL警告无需连接到数据库。
还有其他方法,但它取决于您使用的代码。
Baron Schwartz博客,由于竞争条件,这种'先写后检查'是一种不好的做法。他主张在catch中使用reconnect
的try/catch模式。下面是他建议的伪代码:
function query_database(connection, sql, retries=1)
while true
try
result=connection.execute(sql)
return result
catch InactiveConnectionException e
if retries > 0 then
retries = retries - 1
connection.reconnect()
else
throw e
end
end
end
end
这里是他的全部博客:中[检查如果MySQL连接有效] https://www.percona.com/blog/2010/05/05/checking-for-a-live-database-connection-considered-harmful/
可能的复制(http://stackoverflow.com/questions/3262463/check -if-mysql-connection-is-valid) – 2016-11-29 16:38:41