我正在制作一个eggdrop tcl脚本,将几个公共IRC频道的活动写入数据库(随着时间的推移,我认为这将是10到15个频道)。我有两个选项来处理数据库连接。
我认为最好使用案例1,但是当有很多频道活动时,我认为每次打开和关闭一个连接都会导致大量服务器负载并在一段时间后大幅减速。
最好的方法是什么?
答案 0 :(得分:2)
如果您想保持连接打开,请致电
mysql::ping $dbhandle
不时。
这可以通过以下方式完成:
proc keepMySqlOpen {dbhandle} {
mysql::ping $dbhandle
after 2000 [list keepMySqlOpen $dbhandle]
}
....
set dbh [mysql::open ...]
keepMySqlOpen $dbh
...
另一个选择就是在访问数据库之前使用mysql::ping
,如果需要,应根据mysqltcl manual重新连接。这可能是两个世界中最好的(如果活动不多,请将连接超时,否则保持打开状态。)