//============================================================================
// Name : tools-mysql.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <fstream>
#include <iostream>
#include "db_mysql.h"
#include "SqlBuffer.h"
#include "Singleton.h"
#include "Logic.h"
#include <stdlib.h>
#include <string>
#include "base64.h"
#include "Role.h"
#include <stdio.h>
#include <unistd.h>
#include <linux/types.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <net/if.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include "readini.h"
#include <pthread.h>
#include "lock.h"
#include <map>
#include "RoleManager.h"
#include "base64Manager.h"
#include "LogicManager.h"
#include <sys/types.h>
#include "print.h"
using namespace std;
FILE *pt;
char ch;
string m_StrRoleID;
string LoadConfigure="Configure.ini";
int m_nRoleID=0;
string HotelAddr="";
string DBUser="";
string DBPassWord="" ;
int nPort=0;
int nDBIDMin=0;
int nDBIDMax=0;
int nComputer=0;
int nDataYear=0;
int nDataMon=0;
int nDataDay=0;
int nYearDay=0;
int nData=0;
int nAddRole=0;
vector<uint> m_vectSelectDataHander;
map<int, int> MapPthreadID;
int pthreadID = 0;
int nTimeStar =time(NULL);
string filename;
void PutInt(string &str,int nCount)
{
char szBuffer[1024] = {0};
sprintf(szBuffer,"%d",nCount );
str += szBuffer;
}
void InitConfigure(int nCount)
{
ReadIni ini(LoadConfigure);
string strConf="Configure";
PutInt(strConf,nCount);
HotelAddr = ini.getValue(strConf.c_str(), "HotelAddr");
DBUser = ini.getValue(strConf.c_str(), "DBUser");
DBPassWord = ini.getValue(strConf.c_str(), "DBPassWord");
nPort = ini.getInt(strConf.c_str(), "nPort");
nDBIDMin = ini.getInt(strConf.c_str(), "nDBIDMin");
nDBIDMax = ini.getInt(strConf.c_str(), "nDBIDMax");
nComputer = ini.getInt("Computer", "nComputer");
}
char* getlocalip()
{
int i = 0;
int sockfd;
struct ifconf ifconf;
char buf[512];
struct ifreq *ifreq;
char* ip;
ifconf.ifc_len = 512;
ifconf.ifc_buf = buf;
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
return NULL;
}
ioctl(sockfd, SIOCGIFCONF, &ifconf);
close(sockfd);
ifreq = (struct ifreq*) buf;
for (i = (ifconf.ifc_len / sizeof(struct ifreq)); i > 0; i--)
{
ip = inet_ntoa(((struct sockaddr_in*) &(ifreq->ifr_addr))->sin_addr);
if (strcmp(ip, "127.0.0.1") == 0)
{
ifreq++;
continue;
}
return ip;
}
return NULL;
}
void *thread1(void*)
{
Logic *MgrLogic = g_LogicManager.GetElement(0);
CRole *pRole = g_RoleManager.GetElement(0);
Cbase *pBase = g_base64Manager.GetElement(0);
string Logname = filename+"Log.txt";
ofstream saveLog(Logname.c_str(), ios::app);
cout<<"线程"<<1<<"启动"<<endl;
nTimeStar = time(NULL);
int nSpeed = 0;
if (!MgrLogic || !pRole || !pBase)
{
cout<<"线程"<<1<<"初始化失败请重新启动"<<endl;
printf("file=%s,func=%s,line=%d\n", __FILE__, __FUNCTION__, __LINE__);
return NULL;
}
for (int i = 0; i < 32; i++)
//for (int i = 31; i < 32; i++)
{
InitConfigure(i/nComputer + 1);
string NAME = "aidigame_data";
PutInt(NAME, i);
if (!MgrLogic->InitMySql(NAME.c_str(), HotelAddr.c_str(),DBUser.c_str(), DBPassWord.c_str(), nPort))
{
cout <<"线程"<<1<<"连接数据库aidigame_data" << i << "库失败" << endl;
break;
}
cout <<"线程"<<1<<"连接数据库aidigame_data" << i << "库成功" << endl;
pBase->m_nStarCount = pBase->m_nCount;
int SelectStar = SELECT_STAR +i;
int nErro = 0;
for (int j = SelectStar; j <= SELECT_END + nAddRole; j += SELECT_COUNT)
{
if (200 < nErro)
{
saveLog<<"数据库aidigame_data"<<i<<"查询完毕跳玩家数量"<<(pBase->m_nCount-pBase->m_nStarCount)<<endl;
pBase->m_nStarCount = pBase->m_nCount;
break;
}
if (MgrLogic->SelectData(filename,pRole,pBase, j, nDataYear, nDataMon, nDataDay))
{
pBase->m_nCount++;
nErro = 0;
}
else
{
nErro++;
}
if (SELECT_END + nAddRole < j + 10000)
{
nAddRole += 10000;
}
if (pBase->m_nCount % 10000 == 0 && 0 < pBase->m_nCount)
{
cout <<"线程"<<1<<"find..." << pBase->m_nCount << endl;
}
}
}
cout << "用时" << (time(NULL) - nTimeStar)/60 << "分" << endl;
cout <<"线程"<<1<< "平均速度1秒查询" << pBase->m_nCount / (time(NULL) - nTimeStar) << "次" << endl;
pthreadID++;
return NULL;
}
void *thread2(void*)
{
int nPthread = MapPthreadID[pthread_self()];
Logic *MgrLogic = g_LogicManager.GetElement(1);
CRole *pRole = g_RoleManager.GetElement(1);
Cbase *pBase = g_base64Manager.GetElement(1);
string Logname = filename+"Log.txt";
ofstream saveLog(Logname.c_str(), ios::app);
cout<<"线程"<<2<<"启动"<<endl;
nTimeStar = time(NULL);
int nSpeed = 0;
if (!MgrLogic || !pRole || !pBase)
{
cout<<"线程"<<2<<"初始化失败请重新启动"<<endl;
printf("file=%s,func=%s,line=%d\n", __FILE__, __FUNCTION__, __LINE__);
return NULL;
}
for (int i = 32; i < 64; i++)
//for (int i = 32; i < 32; i++)
{
InitConfigure(i/nComputer + 1);
string NAME = "aidigame_data";
PutInt(NAME, i);
if (!MgrLogic->InitMySql(NAME.c_str(), HotelAddr.c_str(),DBUser.c_str(), DBPassWord.c_str(), nPort))
{
cout<<"线程"<<1<<"查询数据库aidigame_data"<<i<<"完毕跳转至下个库"<<endl;
break;
}
cout <<"线程"<<2<<"连接数据库aidigame_data" << i << "库成功" << endl;
int SelectStar = SELECT_STAR +i;
int nErro = 0;
for (int j = SelectStar; j <= SELECT_END + nAddRole; j += SELECT_COUNT)
{
if (200 < nErro)
{
saveLog<<"数据库aidigame_data"<<i<<"查询完毕跳玩家数量"<<(pBase->m_nCount-pBase->m_nStarCount)<<endl;
pBase->m_nStarCount = pBase->m_nCount;
break;
}
if (MgrLogic->SelectData(filename,pRole,pBase, j, nDataYear, nDataMon, nDataDay))
{
pBase->m_nCount++;
nErro = 0;
}
else
{
pBase->m_nCount++;
nErro++;
}
if (SELECT_END + nAddRole < j + 10000)
{
nAddRole += 10000;
}
if (pBase->m_nCount % 10000 == 0 && 0 < pBase->m_nCount)
{
cout <<"线程"<<2<<"find..." << pBase->m_nCount << endl;
}
}
}
cout << "用时" << (time(NULL) - nTimeStar)/60 << "分" << endl;
cout <<"线程"<<2<< "平均速度1秒查询" << pBase->m_nCount / (time(NULL) - nTimeStar) << "次" << endl;
pthreadID++;
return NULL;
}
void Logic()
{
InitConfigure(1);
filename = "";
PutInt(filename, nData);
for (int i = 0; i < 2; i++)
m_vectSelectDataHander.push_back(0);
g_RoleManager.CreateNewRole(0, nDataYear, nDataMon, nDataDay,nYearDay);
g_base64Manager.CreateNewbase(0);
g_LogicManager.CreateNewLogic(0);
pthread_create((pthread_t*) &m_vectSelectDataHander[0], NULL, &thread1,NULL);
usleep(100);
g_RoleManager.CreateNewRole(1, nDataYear, nDataMon, nDataDay,nYearDay);
g_base64Manager.CreateNewbase(1);
g_LogicManager.CreateNewLogic(1);
pthread_create((pthread_t*) &m_vectSelectDataHander[1], NULL, &thread2,NULL);
usleep(100);
time_t tmBeginTime = time(NULL);
struct tm *tmNowBegin = localtime(&tmBeginTime);
int DataYear = tmNowBegin->tm_year + 1900;
int DataMon = tmNowBegin->tm_mon + 1;
int DataDay = tmNowBegin->tm_mday;
int Hour = tmNowBegin->tm_hour;
int min = tmNowBegin->tm_min;
string Logname = filename+"Log.txt";
ofstream saveLog(Logname.c_str(), ios::app);
saveLog<<DataMon<<"月"<<DataDay<<"日"<<endl;
while (true)
{
if(pthreadID == 2)
break;
usleep(10);
}
for (uint i = 0; i < 2; i++)
pthread_join(m_vectSelectDataHander[i], NULL);
Cbase *mgrBase_1 = g_base64Manager.GetElement(0);
Cbase *mgrBase_2 = g_base64Manager.GetElement(1);
int nRoleCount = mgrBase_1->m_nCount+mgrBase_2->m_nCount;
int nCreate = mgrBase_1->n6DayCreatePlay+mgrBase_2->n6DayCreatePlay;
int nOldRole = mgrBase_1->n6OldPlay+mgrBase_2->n6OldPlay;
int OnlineCount = nCreate + nOldRole;
int nLongEgg = mgrBase_1->m_nLongEggCount+mgrBase_2->m_nLongEggCount;
int
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
tools-mysql-120425.tar.gz (64个子文件)
tools-mysql
Configure.ini~ 795B
src
custypes.h 851B
Container.h 4KB
LogicManager.cpp 566B
zlib.h 65KB
LogicManager.h 455B
print.h 595B
base64.h 4KB
base64Manager.h 466B
Role.h 1KB
print.cpp 6KB
lock.h 441B
Logic.h 2KB
Singleton.h 387B
base64Manager.cpp 569B
mysql
db_mysql.cpp 5KB
utilsdef.h 2KB
db_mysql.h 3KB
RoleManager.cpp 685B
tools-mysql.cpp 17KB
readini.cpp 4KB
SqlBuffer.h 410B
zconf.h 9KB
lock.cpp 983B
readini.h 535B
RoleManager.h 489B
base64.cpp 17KB
SqlBuffer.cpp 490B
Role.cpp 2KB
Logic.cpp 6KB
.project 2KB
20120422.txt~ 1KB
.cproject 62KB
Debug
sources.mk 540B
objects.mk 311B
src
print.d 306B
Role.o 88KB
subdir.mk 1KB
Logic.o 149KB
SqlBuffer.o 71KB
Logic.d 486B
LogicManager.o 174KB
RoleManager.o 171KB
base64Manager.d 298B
readini.o 109KB
LogicManager.d 461B
lock.o 20KB
print.o 126KB
mysql
subdir.mk 799B
db_mysql.o 118KB
db_mysql.d 637B
lock.d 107B
base64.d 387B
Role.d 69B
base64.o 329KB
tools-mysql.o 423KB
RoleManager.d 222B
readini.d 84B
tools-mysql.d 656B
SqlBuffer.d 138B
base64Manager.o 173KB
makefile 1KB
tools-mysql 1.57MB
Configure.ini 795B
共 64 条
- 1
资源评论
利来利往
- 粉丝: 158
- 资源: 134
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功