【问题标题】:Can PHP mysqli set timeout on connect attempt?PHP mysqli 可以在连接尝试时设置超时吗?
【发布时间】:2025-12-19 11:45:12
【问题描述】:

我有这条线可以连接到 MySQL 数据库,只是想知道是否有办法为连接尝试设置超时?

$db = new mysqli($server, $usr, $passwd, $dbname);

【问题讨论】:

    标签: php mysql mysqli timeout


    【解决方案1】:

    是的,您可以为尝试使用 mysqli 从您的 php 程序连接到 MySQL 数据库明确指定超时。

    不过,它有点毛茸茸。当您使用new mysqli() 时,您使用的是可重用连接池。如果要设置超时或任何其他选项,则需要改用real_connect,如下所示:

    $timeout = 30;  /* thirty seconds for timeout */
    $link = mysqli_init( );
    $link->options( MYSQLI_OPT_CONNECT_TIMEOUT, $timeout ) ||
         die( 'mysqli_options croaked: ' . $link->error );
    $link->real_connect($server,  $usr, $passwd, $dbname) ||
         die( 'mysqli_real_connect croaked: ' . $link->error );
    

    这里有一个不错的解释:https://php.net/manual/en/mysqli.real-connect.php

    【讨论】:

    • 这是完美的。太感谢了。对于 Web 应用程序中的数据库事件,我没有解决方案。现在我可以检测到超时并切换到从数据库。干杯!
    • 它在hostgator共享服务器上对我不起作用;但是,这真的很高兴知道。
    最近更新 更多