【问题标题】:PHP: mysql_ping - auto reconnect problemPHP:mysql_ping - 自动重新连接问题
【发布时间】:2011-08-03 17:52:48
【问题描述】:

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

谢谢

【问题讨论】:

    标签: php mysql ping reconnect


    【解决方案1】:

    在查看 php 手册后,我发现这段代码可以帮助您处理 db 连接状态:

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

    【讨论】:

    • 这说明了很多,谢谢!我也遇到了同样的问题。
    • 谢谢,但我正在寻找一种解决方案来恢复 mysql_ping 的行为。代码非常复杂,我想避免到处更改它。
    • @migajek : 祝你好运,虽然我不认为你能如此轻松地恢复这个单一功能的功能。如果您仍然决定使用此解决方案,您的代码中的一个简单搜索/替换将用于将mysql_ping 的所有实例更改为上述代码。
    猜你喜欢
    • 2011-08-20
    • 2011-08-21
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多