PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : db_optimize 2.1 spinnt rum



Masterphil
02.01.2010, 18:36
Hallo an alle, gerade eben war mein Mailfach wieder mal total überfüllt, weil die User die wegen Inaktivität gesperrt wurden auch die Paidmails aktiviert bekommen haben.

Diesen Job übernimmt bei mir db_optimize 2.1.

Heute nun habe ich mir den Cron mal angeschaut, jedoch finde ich dort nicht die Stelle wo eine solche Einstellung gemacht wird.



<?
// VMS-Addon: db_optimize v2.1
// COPYRIGHT BY - SEBASTIAN HOINKES -
// Weitergabe nur unveraendert erlaubt!
//
// Cron zum optimieren aller Tabellen der Datenbank, welche sich in der
// Datenbank befinden, die loeschung unnoetiger und abgelaufener IP-Sperren,
// die Bereinigung der User-Datenbank (sperren inaktiver User), loeschen ungueltiger
// und abgelaufenen Paidmails und deren Eintraege, sowie leeren der Buchungs-Tabelle.

// Am NAchfolgenden Abschnitt ggf. Einstellungen vornehmen
$buchlimit = '20'; // Buchungen welche aelter als XX Tage sind, aus Datenbank loeschen.
$inaktivlimit = '180'; // Wenn User laenger als XX Tage inaktiv ist, wird er mit Hinweis gesperrt (Wengier als 10 Tage nicht möglich!).
$sperrhinweis = 'Account wegen Inaktivit&auml;t gesperrt! Bitte per PN über Klamm an mich (14781) wenden!'; // Sperrhinweis bei Inaktivitaets-Sperrung!

// Die Funktionsdatei einbinden
@require_once ('../../../../lib/functions.lib.php');
// Zur Datenbank verbinden
db_connect();

// Ungueltige Reload-Sperren loeschen
db_query ("DELETE FROM ´vms_reloads´ WHERE bis <= ".(time()));

// Tabellenanzahl und IDs auslesen
$result = mysql_list_tables($db_base);
$menge = mysql_num_rows($result);
for($x=0;$x<$menge;$x++){

// Tabellennamen holen
$table_name = mysql_tablename($result,$x);

// Tabelle optimieren
db_query ("OPTIMIZE TABLE `".$table_name."`");
}

// Zeit setzen
db_query ("UPDATE ".$db_prefix."_crons SET laufzeit = '".time()."' WHERE bezeichnung = 'Datenbank optimieren'");

// User, welche ueber 30 Tage inaktiv, sperren mit Hinweis
if($inaktivlimit < 10) { $inaktivlimit = 10; }
db_query ("UPDATE ".$db_prefix."_kontodaten SET status = 2, hinweis = '".$sperrhinweis."' WHERE last_active < ".(time()-($inaktivlimit*86400))." AND last_active > 0");

// Buchungen loeschen aud DB, wenn diese aelter als xx Tage sind
db_query ("DELETE FROM ".$db_prefix."_buchungen WHERE buchungszeit < ".(time()-($buchlimit*86400)));

// Alle ungueltigen Paidmails und deren Eintraege loeschen
db_query ("DELETE FROM ".$db_prefix."_paidmails_empfaenger WHERE gueltig < ".time());
db_query ("DELETE FROM ".$db_prefix."_paidmails_versendet WHERE gueltig < ".time());

db_close();
die('Cron erfolgreich gelaufen!');
?>


Vielleicht hatte schon jemand das gleiche Problem und kann mir evtl helfen.

MfG

didith1207
02.01.2010, 18:42
wie wäre es wenn du deinen ganzen cron postest?

villeicht hast ja irgendwo nen wurm drinnen...

Masterphil
02.01.2010, 18:54
Habs oben im Hauptpost geändert, wobei eingeschlichen hat sich der Fehler nicht, er besteht schon seit 3 Jahren nur langsam nerft es mich halt extrem.


Achso, das Einbinden der functions.lib ist es nicht, das sieht so komisch aus weil meine Crons in einem versteckten Ordner tief im VMS Dschungel sind.

MfG

didith1207
02.01.2010, 19:42
hmm..also der cron schaut gut aus....

bei mir wäre ein versenden nicht möglich an gesperrte ich habe diesen code in der adminforce/content/werbesystem/paidmails und paidmails_versenden :


$empfaenger = db_query("SELECT e.uid,e.emailadresse FROM
".$db_prefix."_emaildaten e
LEFT JOIN ".$db_prefix."_kontodaten k ON k.uid=e.uid
WHERE (e.freigabe_fuer = '3' or e.freigabe_fuer = '2') AND k.status=1");status =1 also an keine anderen wird was versendet

Masterphil
02.01.2010, 20:03
Dies ist zumindest schonmal eine Idee das Problem zu umgehen, werde ich mich mal dran probieren das bei mir auch so in etwa Umzusetzen.

Hat sonst villeicht jemand ne Idee woran es tatsächllich liegen könnte?

MfG

jpwfour
02.01.2010, 20:22
Hm, irgendwo in eimem Cron oder sonstwo muss das ja aktiviert werden, ich würd einfach den Namen der Tabelle wo das gespeichert wird in 'ne Suche im ganzen Projekt (also allen Dateien) eingeben, dann alle Stellen (soviele solltens ja nicht sein) durchschaun wo da was geändert wird.


Können heut die meisten Texteditoren schon, Suchen in mehreren Dateien, bzw. Windows macht das afaik auch über die normale Suche?