1

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

谢谢

4

1 回答 1

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

?>
于 2011-04-12T09:49:38.827 回答