mysql-data-clean-timer.c

来自「在linux下每天在指定的时间里自动清除mysql数据库中的一个星期前的log数」· C语言 代码 · 共 87 行

C
87
字号
#include </usr/include/mysql/mysql.h>
#include <stdio.h>
#include <time.h>

int main()
{  
	
   printf("Data Cleaner Staring......\n ");

   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

   char *server = "127.0.0.1";
   char *user = "root";
   char *password = "123456";
   char *database = "ddbb";
   time_t timep;
   struct tm *p;
   int nhour,nsec,nmin;
   int chour,csec,cmin;
   
   conn = mysql_init(NULL);
   
   time(&timep);
   p=localtime(&timep);
   nhour=p->tm_hour;
   nmin=p->tm_min;
   nsec=p->tm_sec;
   chour=12;
   cmin=30;
   csec=1;

   int ncan=nhour+nmin+nsec;

   do
   {
	  sleep(1);
	time(&timep);
      p=localtime(&timep);
      nhour=p->tm_hour;
      nmin=p->tm_min;
      nsec=p->tm_sec;
      ncan=nhour+nmin+nsec;	
	  if(nhour==chour & nmin==cmin & nsec==csec)
	  {
		 printf("Cleaning the data...... \n");
		if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0))
		{
		fprintf(stderr, "%s\n", mysql_error(conn));
		cmin=cmin+1;
		if (cmin==60)
		{cmin==0;
		}
		continue;
		}
         if (mysql_query(conn, "delete from slog where DTIME < now()-7000000")) 
		 {
			 fprintf(stderr, "%s\n", mysql_error(conn));
			 cmin=cmin+1;
			if (cmin==60)
			{cmin==0;
			}
	    	 continue;
	     }
         if (mysql_query(conn, "delete from klog where DTIME < now()-7000000")) 
		 {
			 fprintf(stderr, "%s\n", mysql_error(conn));
			 cmin=cmin+1;
			if (cmin==60)
			{cmin==0;
			}
	    	 continue;
	     }
		 mysql_close(conn);
		   chour=11;
		   cmin=40;
		   csec=1;
	  }else
	  {
		  continue;
	  }
   }while (1);   

   return 1;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?