mofaklaus
29-10-2006, 12:51
Hallo Gemeinde,
ich habe ein Programm geschrieben, welches Parameter aus eine MySQL Datenbank auslesen soll. Das auslesen wird einmal pro minute durchgeführt.
Dazu habe ich folgende Funktion geschrieben.
void init_read(void){
MYSQL *my;
MYSQL_RES *result;
MYSQL_ROW record;
char sql[150];
my = mysql_init(NULL);
if(my == NULL){
fprintf(stderr, "Fehler mysql_init(): %u (%s)\n", mysql_errno (my), mysql_error(my));
}
if (mysql_real_connect(my, HOST, USER, PASSWD, DBNAME, PORT, SOCKET, FLAG) == NULL){
fprintf(stderr, "Fehler mysql_real_connect(): %u (%s)\n", mysql_errno (my), mysql_error(my));
}
else {
sprintf(sql, "SELECT PARAM_Value FROM Tabelle WHERE PARAM_Name = 'Param1'");
if(mysql_real_query(my, sql, strlen(sql)) != 0) fprintf(stderr, "Fehler mysql_real_connect(): %u (%s)\n", mysql_errno (my), mysql_error(my));
result = mysql_store_result (my);
while((record = mysql_fetch_row(result))) { Param1 = atof(record[0]); }
mysql_free_result(result);
}
mysql_close (my);
}
Das funktioniert auch recht gut. Aber nach ca. 12- 16 Stunden ist mein Speicher(RAM und Swap) voll. Ich vermute also, dass ich die MySQL Instanz nicht richtig beende, oder das Object "my" nicht lösche.
Wenn ich das gesamte Programm beende, ist der Speicher wieder frei.
Aber wass habe ich falsch gemacht oder was habe ich nicht gemacht?
Danke
Mofaklaus
ich habe ein Programm geschrieben, welches Parameter aus eine MySQL Datenbank auslesen soll. Das auslesen wird einmal pro minute durchgeführt.
Dazu habe ich folgende Funktion geschrieben.
void init_read(void){
MYSQL *my;
MYSQL_RES *result;
MYSQL_ROW record;
char sql[150];
my = mysql_init(NULL);
if(my == NULL){
fprintf(stderr, "Fehler mysql_init(): %u (%s)\n", mysql_errno (my), mysql_error(my));
}
if (mysql_real_connect(my, HOST, USER, PASSWD, DBNAME, PORT, SOCKET, FLAG) == NULL){
fprintf(stderr, "Fehler mysql_real_connect(): %u (%s)\n", mysql_errno (my), mysql_error(my));
}
else {
sprintf(sql, "SELECT PARAM_Value FROM Tabelle WHERE PARAM_Name = 'Param1'");
if(mysql_real_query(my, sql, strlen(sql)) != 0) fprintf(stderr, "Fehler mysql_real_connect(): %u (%s)\n", mysql_errno (my), mysql_error(my));
result = mysql_store_result (my);
while((record = mysql_fetch_row(result))) { Param1 = atof(record[0]); }
mysql_free_result(result);
}
mysql_close (my);
}
Das funktioniert auch recht gut. Aber nach ca. 12- 16 Stunden ist mein Speicher(RAM und Swap) voll. Ich vermute also, dass ich die MySQL Instanz nicht richtig beende, oder das Object "my" nicht lösche.
Wenn ich das gesamte Programm beende, ist der Speicher wieder frei.
Aber wass habe ich falsch gemacht oder was habe ich nicht gemacht?
Danke
Mofaklaus