首页 > 解决方案 > MYSQLI_OPT_CONNECT_TIMEOUT,mysqli 选项不起作用

问题描述

我收到以下警告

警告:mysqli::options() 期望参数 1 很长,字符串在 ...

使用此代码时:

$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 300);

我正在尝试运行一个执行时间超过 1 分钟的查询。所以我想增加连接超时。连接是这样的:

$mysqli = mysqli_init( );
$mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 300);
$mysqli->options(MYSQLI_OPT_READ_TIMEOUT, 300);
if (!$mysqli->real_connect($GLOBALS['ipServer'], $GLOBALS['mysqlLogin'], $GLOBALS['mysqlPwd'], $GLOBALS['db'])) {
    die("Error connecting to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error);
    exit();
}

似乎 mysqli 选项不起作用。有任何想法吗?

标签: phpmysqli

解决方案


您应该启用所有 PHP 错误,因为您可能会收到通知,例如:

注意:使用未定义的常量 MYSQLI_OPT_CONNECT_TIMEOUT – 假定为“MYSQLI_OPT_CONNECT_TIMEOUT”

这表明该常量未定义(可能您的 MySQLi 扩展不支持它),并且 PHP 将其视为一个字符串,包含MYSQLI_OPT_CONNECT_TIMEOUT. 所以你看到的警告是正常的。

尝试转储所有常量,使用get_defined_constants(), 查看定义了哪些常量。您也可以尝试使用 PHP 手册中提供的整数值(这不是一个很好的建议,但加上正确的注释,这将是有意义的)。

但这归结为您的 MySQLi 扩展是否支持它。


推荐阅读