2013-03-01 147 views
2

我正在制作一个eggdrop tcl脚本,将几个公共IRC频道的活动写入数据库(随着时间的推移,这将会是我认为的10到15个频道)。我有两个选择如何处理数据库连接。保持mysql连接打开

  1. 的用户说了什么 - >打开一个MySQL连接到数据库 - >插入关于用户所说的信息 - >关闭连接
  2. 启动BOT - >打开一个MySQL连接到数据库 - >插入信息时,有渠道活动 - >等待更多的信息等等

我认为这是最好使用情况1,但是当有很多渠道活动我想打开,每次关闭连接会造成一个巨大的服务器负载,并在一段时间后急剧下降。

这样做的最好方法是什么?

回答

2

如果你想保持连接打开只需要调用

mysql::ping $dbhandle 
从时间

时间。

这东西就像这样:

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

的另一种选择就是在访问数据库,这要根据mysqltcl manual重新如有必要,使用前mysql::ping。这可能是两个世界中最好的(如果没有太多活动,让连接超时,否则保持打开状态)。

相关问题