mysql - 保持 mysql 连接打开

标签 mysql tcl eggdrop

我正在制作一个eggdrop tcl 脚本,将多个公共(public)IRC channel 的事件写入数据库(我认为随着时间的推移,这将是10 到15 个 channel )。我有两个选择如何处理数据库连接。

  1. 用户说了些什么 -> 打开与数据库的 mysql 连接 -> 插入有关用户所说内容的信息 -> 关闭连接
  2. 启动机器人 -> 打开与数据库的 mysql 连接 -> 当有 channel 事件时插入信息 -> 等待更多信息等。

我认为最好使用案例 1,但当 channel 事件较多时,我认为每次打开和关闭连接都会导致大量服务器负载,并在一段时间后大幅减慢速度。

最好的方法是什么?

最佳答案

如果您想保持连接打开,只需调用

mysql::ping $dbhandle

不时。

这可以通过以下方式完成:

proc keepMySqlOpen {dbhandle} {
    mysql::ping $dbhandle
    after 2000 [list keepMySqlOpen $dbhandle]
}
....
    set dbh [mysql::open ...]
    keepMySqlOpen $dbh
...

另一个选项是在访问数据库之前使用mysql::ping,这应该根据mysqltcl manual如有必要,请重新连接。这可能是两全其美(如果没有太多事件,则让连接超时,否则保持打开状态)。

关于mysql - 保持 mysql 连接打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15161519/

相关文章:

tcl - 关于 tcl 中的命名管道行为

list - TCL中有类似std::set的数据结构吗?

php 注册,无法正常工作。

mysql - 我的查询每次返回相同的(date2)

multidimensional-array - 在 Tcl 中动态创建数组

regex - TCL 将文本字符串拆分为多个变量(eggdrop)

tcl - regsub 匹配为 lindex 索引,针对 irc 控制字符

php - mysql php做循环的方法

MySQL AVG查询帮助