【发布时间】:2021-02-27 08:36:03
【问题描述】:
下面的代码将停留在real_connect() 100%。 set_time_limit 和 default_socket_timeout 和 MYSQLI_OPT_CONNECT_TIMEOUT 已设置,但不起作用。
我在 PHP 5.6 和 PHP 7.1 上进行了测试。 mysql驱动是mysqlnd。
set_time_limit(30);
ini_set('default_socket_timeout', 10);
$mysql = new mysqli();
$mysql->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);
$mysql->real_connect('www.baidu.com', 'root', 'xxx', 'xxx', 80);
问题:
- 为什么使用主机地址
www.baidu.com和端口号80时PHP进程卡在real_connect? - 为什么
MYSQLI_OPT_CONNECT_TIMEOUT和其他超时设置不起作用? - 对于这种特殊情况,是否有任何方法可以设置超时?
【问题讨论】:
-
嗯,mysql 运行在 3306 端口而不是 80 端口。
-
@AlexBarker 我知道。我只想知道为什么PHP在使用主机地址“www.baidu.com”和端口号“80”时卡在real_connect上,虽然我设置了超时
-
也设置
MYSQLI_OPT_READ_TIMEOUT