天天看點

為Unreal添加一個定時運作的功能子產品

  在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,如需轉載請自行聯系原作者