FBIagent
Erfahrenes Mitglied
Moin,
ich habe da ein Problem beim Speicherverbrauch beim benutzen von MySQL.
Ich starte das Programm und gucke in den Task-Manager.
Es startet mit ca. 1.500 K
Ich lasse es länger laufen und der Speicherverbrauch steigt rapide.
Hier erstmal der Code:
dna.cpp (dna steht für "delete not active")
mysqlcon.h
Wie kann ich den jetzt den rapiden Speicherverbrauchsanstieg stoppen?
(Rapider Speicherverbrauch in der Funktion checkAccounts(); )
THX im Vorraus
MFG FBIagent
ich habe da ein Problem beim Speicherverbrauch beim benutzen von MySQL.
Ich starte das Programm und gucke in den Task-Manager.
Es startet mit ca. 1.500 K
Ich lasse es länger laufen und der Speicherverbrauch steigt rapide.
Hier erstmal der Code:
dna.cpp (dna steht für "delete not active")
Code:
#include <iostream>
#include <fstream>
#include <vector>
#include <time.h>
#include <windows.h>
#include <MySQL/mysql.h>
#include "mysqlcon.h"
mConnection mCon;
void checkAccounts()
{
bool all_fine;
std::string accLogin;
int accRegTime;
std::cout << "Starting loop to check accounts register time in 5 seconds...\n\n\n";
Sleep(5000);
for(;;)
{
all_fine = true;
std::cout << "Next accounts register time check now!\n";
std::cout << "Get accounts from database... ";
mCon.query("SELECT * FROM `accounts_unchecked`");
MYSQL_RES *acc_res = mCon.lastRes();
std::cout << "done.\n";
std::cout << "Check accounts... ";
while(MYSQL_ROW acc_row = mysql_fetch_row(acc_res))
{
accLogin = acc_row[0];
accRegTime = atoi(acc_row[7]);
if((accRegTime+2592000)<time(NULL))
{
all_fine = false;
std::cout << "\nDelete account:" << accLogin;
mCon.query("DELETE FROM `accounts_unchecked` WHERE `login`='"+accLogin+"';");
}
}
if(all_fine == true)
std::cout << "all fine.\n\n";
else
std::cout << "\n\ndone.\n\n";
std::cout << "Next accounts check in 5 minutes.\n\n\n";
// mCon.queryFree();
Sleep(300000);
}
}
int main()
{
bool running = true;
std::cout << "Loading config... ";
if(mCon.loadConfig() == true)
std::cout << "successfull.\n";
else
{
std::cout << "failed.\n Error: Can't find config.txt\n\n";
running = false;
}
if(running == true)
{
std::cout << "Connecting to MySQL server... ";
if(mCon.connect() == true)
{
std::cout << "successfull.\n\n";
checkAccounts();
}
else
std::cout << "failed.\nError: Can't connect to MySQL server. Wrong configs or server down?\n\n";
}
mCon.close();
system("Pause");
return 0;
}
mysqlcon.h
Code:
#ifndef MY_MYSQLCON_H
#define MY_MYSQLCON_H
class mConnection
{
private:
MYSQL mCon;
MYSQL_RES *mRes;
std::string mInfo[4];
public:
bool loadConfig();
bool connect();
bool query(std::string data);
MYSQL_RES *lastRes();
void queryFree();
void close();
};
bool mConnection::loadConfig()
{
std::string row;
std::vector<std::string> rows;
std::ifstream file("config.txt");
if(!file.is_open())
return false;
while(getline(file,row))
rows.push_back(row);
for(int i=0;i<rows.size();i++)
mInfo[i] = rows[i];
return true;
}
bool mConnection::connect()
{
mysql_init(&mCon);
if(mysql_real_connect(&mCon,mInfo[0].c_str(),mInfo[1].c_str(),mInfo[2].c_str(),mInfo[3].c_str(),3306,NULL,0))
return true;
else
return false;
}
bool mConnection::query(std::string data)
{
if(!mysql_query(&mCon,data.c_str()))
return false;
else
return true;
}
MYSQL_RES *mConnection::lastRes()
{
return mysql_store_result(&mCon);
}
void mConnection::queryFree()
{
mysql_free_result(mRes);
}
void mConnection::close()
{
mysql_close(&mCon);
}
#endif
Wie kann ich den jetzt den rapiden Speicherverbrauchsanstieg stoppen?
(Rapider Speicherverbrauch in der Funktion checkAccounts(); )
THX im Vorraus
MFG FBIagent
Zuletzt bearbeitet: