提问者:小点点

如何将PHP连接到MySQL作为一个交互连接是它将使用interactive_timeout而不是wait_timeout?


因此,MySQL具有wait_timeoutinteractive_timeout。 默认情况下,我们使用WAIT_TIMEOUT建立MySQL连接。 我希望使用interactive_timeout与用户连接,这样超时不会干扰用户交互。 如何创建交互连接?

我当前的代码是这样的:

$db_conn = mysqli_connect(HOSTNAME, DBUSERNAME, DBPASSWORD,DATABASE); 

共2个答案

匿名用户

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_interactive_timeout

“服务器在关闭交互连接之前等待其activity的秒数。交互客户端定义为对mysql_real_connect()使用CLIENT_INTERACTIVE选项的客户端。另请参阅wait_timeout.”

并且,从PHP:

https://www.php.net/manual/en/mysqli.real-connect.php

匿名用户

即使您阅读了文档,也不清楚interactive_timeout是什么意思。

这意味着如果交互式客户端的连接空闲时间过长,则该连接将自动关闭。 这不会干扰任何用户交互,因为如果他们正在运行查询,根据定义,连接不是空闲的。

wait_timeoutinteractive_timeout的默认值都是28800秒(8小时)。 因此,客户端必须什么也不做,只需保持连接打开8小时,然后才会因不活动而超时。 这不太可能影响任何PHP请求,只要请求完成,PHP请求就会关闭。

文档中也没有提到使用interactive_timeout的唯一现有客户机是mysql命令行客户机。

PHP,Java,ODBC,Python,Perl等语言的所有连接器都使用常规的WAIT_TIMEOUT。 我没有看到任何连接器有使用interactive_timeout的选项。 编程连接器不被认为是交互式的,即使它们所连接的应用程序接受用户输入。

即使是新的MySQL Shell客户端也不启用interactive_timeout。 它依赖于其他客户端使用的传统WAIT_TIMEOUT