在unreal中,有時需要根據自已的需要添加自已的定時運作的功能程式,如果你想實作這樣的功能,請按照下列步驟進行,以我添加的定時檢查Mysql連接配接情況(因為Mysql系統預設48還是多少小時後斷開一個不活動的連接配接,如果在這個時間内,收到連接配接的mysql_ping消息,則該連接配接不會斷掉):
1,在include\h.h檔案最末,添加如下定義:
extern EVENT(check_mysql_conn);
2,在src\events.c 212行附件,修改為如下代碼:
/* Start events */
//add by oldhawk
EventAddEx(NULL, "check_mysql_conn", 600, 0, check_mysql_conn, NULL); //這裡的600表是3分鐘執行一次
//add end
EventAddEx(NULL, "tunefile", 300, 0, save_tunefile, NULL);
EventAddEx(NULL, "garbage", GARBAGE_COLLECT_EVERY, 0, garbage_collect, NULL);
3,繼續,在src\events.c最後,添加如下代碼:
//add by oldhawk
EVENT(check_mysql_conn)
{
if(strcmp(MYSQL_HOST,"0")){
//ircd_log(LOG_SERVER,"in event check_mysql_conn");
if(!my_conn){ //資料庫未連接配接,可能是首次起動
ircd_log(LOG_CLIENT,"Begin to connect to Mysql");
my_conn=my_mysql_connect();
if(!my_conn){
sendto_ops("Mysql 資料庫伺服器出現故障,請通知管理者排除!");
ircd_log(LOG_SERVER,"Mysql Connect : ERROR!");
return;
}else{
mysql_query(my_conn,"SET NAMES 'gb2312'");
ircd_log(LOG_SERVER,"Mysql Connect : OK!");
}
}else{ //資料庫已連接配接,則測試激活
if(my_mysql_ping(my_conn)!=0){
ircd_log(LOG_SERVER,"Mysql Ping : mysql ping error");
my_conn=my_mysql_connect();
if(!my_conn){
sendto_ops("Mysql 資料庫伺服器出現Ping故障,請通知管理者排除!");
ircd_log(LOG_SERVER,"Mysql Ping reConnect : ERROR!");
return;
}else{
mysql_query(my_conn,"SET NAMES 'gb2312'");
ircd_log(LOG_SERVER,"Mysql Ping reConnect : OK!");
}
ircd_log(LOG_SERVER,"Mysql Ping: OK!");
}
}
}
//add end
本文轉自 OldHawk 部落格園部落格,原文連結:http://www.cnblogs.com/taobataoma/archive/2007/07/28/834868.html,如需轉載請自行聯系原作者