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

How to connect PHP to MySQL as an interactive connection is it will use interactive_timeout instead of wait_timeout?

所以,MySQL 有 wait_timeoutinteractive_timeout。默认情况下,我们使用 MySQL 个连接 wait_timeout。我想使用 interactive_timeout 与用户建立联系,这样超时就不会干扰用户交互。如何创建交互式连接?

我当前的代码是这样的:

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

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

"The number of seconds the server waits for activity on an interactive connection before closing it. An interactive client is defined as a client that uses the CLIENT_INTERACTIVE option to mysql_real_connect(). See also wait_timeout."

并且,来自 PHP:

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

即使您阅读了文档,也不是很清楚 interactive_timeout 的含义。

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

wait_timeoutinteractive_timeout 的默认值都是 28800 秒(8 小时)。因此,客户端除了在由于不活动而超时之前保持打开连接 8 小时外,什么都不做。这不太可能影响任何 PHP 请求,该请求在请求完成后立即关闭。

文档中也没有提到唯一使用 interactive_timeout 的现有客户端是 mysql command-line client

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

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