PHP mysqli 可以设置连接尝试超时吗?

问题描述 投票:0回答:2

我用这一行连接到 MySQL 数据库,只是想知道是否有办法为连接尝试设置超时?

$db = new mysqli($server, $usr, $passwd, $dbname);
php mysql mysqli timeout
2个回答
19
投票

是的,您可以显式指定尝试使用 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


0
投票

我发现使用

set_opt()
比在
options()
调用中使用标志更干净、更容易。

$timeout = 5;
$conn = mysqli_init();
$conn->set_opt( MYSQLI_OPT_CONNECT_TIMEOUT, $timeout );

这对我有用,因为似乎无法在

real_connect
函数中设置多个标志,并且多个
options
调用无法设置多个标志。

© www.soinside.com 2019 - 2024. All rights reserved.