如何为 MySQL 上的特定数据库设置 wait_timeout?

如何为 MySQL 上的特定数据库设置 wait_timeout?

我在 my.cnf 文件中设置了全局 wait_timeout 值,但我想为不同的数据库设置不同的 wait_timeout 值,并且不能在软件端进行,我需要在 MySQL 服务属性中进行设置。可以吗?

答案1

请注意,网页是“无状态的”,不会将任何内容从一个页面传送到另一个页面,至少与您的程序看起来的方式不同。您试图让程序运行 30 分钟,而“状态”不会消失。

即使在这个相对可靠的时代,这也并不实用。对于长时间运行的任务,最好是像网页和队列处理那样做——将“状态”存储在某个地方(数据库表),并将“id”从一个页面传递到下一个页面。在网页中,“id”可以是 URL 中的参数或“cookie”中的值等。同时,数据库中可以保存任意大量的数据,直到用户回来取用它。

至于在 3 分钟和 30 分钟之间进行选择,则需要通过编程来完成。

所以...

  1. 尽你所能进行处理。
  2. 将“状态”存储在数据库中,获取“id”,并将其提供给用户。
  3. 关闭连接。

之后...

  1. 用户启动下一阶段的处理
  2. 该 id 用于获取状态。
  3. 如果他花费的时间太长(根据您的应用程序检查,超过 3 分钟或 30 分钟),他就会受到轻微的处罚并被遣送。

这大大减少了同时需要连接。是的,建立新连接会产生一些开销,但这是值得的。此外,您可以完全控制他可以“保持购物车处于活动状态”的时间长度或其他任何内容。

“安全”——有人认为,通过 URL 传递一个简单的“id”数字是非常不安全的,尤其是对于恶作剧者来说。哈希值可用于大大降低此类黑客获得有效 id 的机会。在 Web 处理中,“cookie”非常“安全”。

抱歉,我打了个手势,但了解一些关于您的应用程序(购物车或队列等)和平台(网站等)的信息会有所帮助。

相关内容