PHP:mysql_ping - 自动重新连接问题

时间:2011-04-12 09:44:33

标签: php mysql ping reconnect

我正在处理一段旧的但非常复杂的php代码,它依赖于通过mysql_ *函数直接访问mysql。代码广泛使用mysql_ping,但它假设每次mysql_ping调用也会重新连接,以防它发现连接超时。 问题是,因为MySQL 5.0。某些东西 mysql_ping 没有自动重新连接。在文档中,我发现我需要使用适当的标志调用mysql_options,但是没有这样的功能,如 mysql_options 。相反,有mysqli_options,但我们现在无法切换到mysqli_ *,它需要花费太多时间。 降级MySQL也不被视为解决方案。 任何想法如何解决?

由于

1 个答案:

答案 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....

?>