查看 PHP 文档页面:
http://www.php.net/manual/en/mysqli.real-connect.php
例子#1
编辑 1
一旦您连接到 mysql,客户端就会收到一个“横幅”,服务器会在其中声明他的版本和其他内容。
“在 Linux 上 [mysql.connect_timeout] 设置也用于等待来自服务器的第一个答复。”意味着客户端使用相同的连接超时等待此“横幅通信”。
在我的测试中,我设置了 4 秒的超时时间(请参阅投票中的 4000):
connect(3, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
fcntl64(3, F_SETFL, O_RDWR) = 0
poll([{fd=3, events=POLLIN|POLLPRI}], 1, **4000**) = 1 ([{fd=3, revents=POLLIN}])
setsockopt(3, SOL_SOCKET, SO_RCVTIMEO, "\2003\341\1\0\0\0\0", 8) = 0
setsockopt(3, SOL_SOCKET, SO_SNDTIMEO, "\2003\341\1\0\0\0\0", 8) = 0
setsockopt(3, SOL_IP, IP_TOS, [8], 4) = 0
setsockopt(3, SOL_TCP, TCP_NODELAY, [1], 4) = 0
setsockopt(3, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
poll([{fd=3, events=POLLIN}], 1, **4000**) = 1 ([{fd=3, revents=POLLIN}])
read(3, "4\0\0\0\n5.1.55"..., 16384) = 56
我的服务器是5.1.55版本!
简而言之:connection_timeout 与查询超时无关