我正在处理一段旧的但非常复杂的php代码,它依赖于通过mysql_ *函数直接访问mysql。代码广泛使用mysql_ping,但它假设每次mysql_ping调用也会重新连接,以防它发现连接超时。 问题是,因为MySQL 5.0。某些东西 mysql_ping 没有自动重新连接。在文档中,我发现我需要使用适当的标志调用mysql_options,但是没有这样的功能,如 mysql_options 。相反,有mysqli_options,但我们现在无法切换到mysqli_ *,它需要花费太多时间。 降级MySQL也不被视为解决方案。 任何想法如何解决?
由于
答案 0 :(得分:8)
检查php手册后,我发现这段代码可以帮助你处理数据库连接状态:
<?php
$conn = mysql_connect('localhost','user','pass');
mysql_select_db('db',$conn);
if (!mysql_ping ($conn)) {
//here is the major trick, you have to close the connection (even though its not currently working) for it to recreate properly.
mysql_close($conn);
$conn = mysql_connect('localhost','user','pass');
mysql_select_db('db',$conn);
}
//run queries knowing that your connection is alive....
?>