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的操作及代码,请参考前面的文章。
  • 相关阅读:
    ZOJ1450 BZOJ1136 BZOJ1137 HDU3932[最小圆覆盖]
    POJ 1755 Triathlon [半平面交 线性规划]
    POJ 3384 Feng Shui [半平面交]
    POJ 3525 Most Distant Point from the Sea [半平面交 二分]
    POJ 1279 Art Gallery [半平面交]
    POJ3335 POJ3130 POJ1474 [半平面交]
    POJ 3608 Bridge Across Islands [旋转卡壳]
    nginx访问量统计
    PV UV QPS 并发数
    PV、UV、IP之间的区别与联系
  • 原文地址:https://www.cnblogs.com/taobataoma/p/834868.html
Copyright © 2011-2022 走看看