zoukankan      html  css  js  c++  java
  • 为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"6000, check_mysql_conn, NULL); //这里的600表是3分钟执行一次
        
    //add end
        EventAddEx(NULL, "tunefile"3000, 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!");
                    }
                }
    else{
                    ircd_log(LOG_SERVER,
    "Mysql Ping: OK!");
                }
            }
        }
    }
    //add end

          上面的代码中,会每三分钟检查一次mysql连接是否正常,如果不正常,则重新连接。关于mysql的操作及代码,请参考前面的文章。
  • 相关阅读:
    netframework webapi IogAttribute记录request参数和错误信息
    An error occurred while starting a transaction on the provider connection. See the inner exception for details.
    mvc partialView断点调试问题
    mysql 用行号rownum更新顺序号字段
    sqlserver 导入excel
    vs2017 git凭证问题
    DataTable 转换为List
    Resharper 修改命名空间
    web api解决序列化后返回标准时间带T问题
    获取当前程序的路径
  • 原文地址:https://www.cnblogs.com/taobataoma/p/834868.html
Copyright © 2011-2022 走看看