PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbank optimieren



Arctica
09.11.2010, 07:08
Hallo zusammen,

habe neulich ein Addon gesehen womit sich die Datenbank optimieren lässt. Denkt ihr ich würde es nochmal finden?

Wäre lieb wenn ihr mir da weiter helfen könntet.

Gruß
Arctica

jpwfour
09.11.2010, 11:22
http://www.designerscripte.net/downloads.php?do=file&id=68
http://www.designerscripte.net/downloads.php?do=file&id=69

SebbyPHM
09.11.2010, 13:46
Über 5 Jahre ist es her ... Oje ... Wird ja wirklich mal Zeit für ne neue VMS-Version :biggrin1:

DJschatz27
09.11.2010, 13:53
Tachchen ist die datei denn überhaupt noch Aktuell fürs VMS 1,2 empfehlenswert oder schon veraltet?

EDIT: Hab eben das DB Optimize 2 instaliert in phpadmin den code eingegeben abe rden cron kann man nicht starten und muß ich änderungen in der db_optimize.php machen weil ich bin mir nicht sicher was genau

jpwfour
09.11.2010, 14:20
Sobald die Seite ein paar Slots und Addons drin hat, wird die Datenbankoptimierung eh immer zum "Spezialfall".

Da wird kaum jemand ein geeignetes Addon für schreiben können, da es selbst mit alten Logeinträgen löschen und alle Tabellen "optimieren" (MySQL) nicht getan ist.

Das sollten aber diese Crons tun im DL Bereich, hab sie mir nicht konkret angeschaut, aber im Grundskript sind das ja nur buchungsliste und reloads und die Tabellen für den Mailversand.

Alles weitere kommt ja individuell dazu, sei es nun die Gamebuchungsliste, Logtabellen für die Spiele oder spezielle Tabellen für angepasste Mailer etc.

Die Dateien sind so noch fürs VMS 1.1, Anleitung zum Umbau auf 1.2 sollten sich finden lassen hier im Forum :wink:

Ich persönlich sehe das so, dass die Optimierung eh nur einen Sinn hat, wenn man weis, was man da tut, bzw. jemanden dafür engagiert, dass der das für den Spezialfall einrichtet. Daher sehe ich keinen sinnvollen Bedarf an einem fertigen Addon für diesen Fall. Klar sehen das einige Webbis anders, die wollen einen Knopf wo sie drücken können und dann dasteht: "Datenbank voll optimiert", dann sind sie beruhigt, auch wenns effektiv kaum was gebracht hat :biggrin1:

DJschatz27
09.11.2010, 15:27
na wenn das so ist das es nichts bring brauch man das ja auch nicht und ich hab ja nur ne reine klickseite also ist so ein programm nicht sinnvoll aber danke für die info

Sam2004
09.11.2010, 20:18
na wenn das so ist das es nichts bring brauch man das ja auch nicht und ich hab ja nur ne reine klickseite also ist so ein programm nicht sinnvoll aber danke für die info

In deinem Fall, wäre das sogar sehr sinnvoll, weil sonst iwann Probleme mit den Reloads bekommen wirst. Wenn intensive klicker bei dir hast, ist da schnell dunkel, vorallem wenn nur normalen Webspace hast ;)

LG

DJschatz27
09.11.2010, 21:35
Na wenn es da ein codeschnippsel gibt der funzt dann schon aber hab keine sorge das es dunkel bleibt!

Weil ich hab das DB Optimize 2 instaliert funzt aber nicht und weider raus geschmißen

jpwfour
09.11.2010, 21:39
...

Die Dateien sind so noch fürs VMS 1.1, Anleitung zum Umbau auf 1.2 sollten sich finden lassen hier im Forum :wink:
...


...
Weil ich hab das DB Optimize 2 instaliert funzt aber nicht ...

:suspicious:

Sam2004
09.11.2010, 21:43
:suspicious:
Sehr Woooort gewaltig :biggrin1:

DJschatz27
09.11.2010, 21:43
jpwfour is das mal witzig wenn ich hier was suche muß ich lange suchen und hab momentan keine lust was zu suchen also bleibt es erstmal so wie es ist weil wenn ich was suche das stichwort eingebe und weiß das gibt es hier finde ich leider nichts

jpwfour
09.11.2010, 21:53
jpwfour is das mal witzig ... :biggrin1:

http://www.designerscripte.net/showpost.php?p=84951&postcount=4

DJschatz27
09.11.2010, 22:27
Danke für den Tip aber will nicht naja dann muß ich eben warten bis was anderes da ist

SebbyPHM
10.11.2010, 00:09
Danke für den Tip aber will nicht naja dann muß ich eben warten bis was anderes da ist

Viel Spaß beim warten.

Das Addon von mir ist 5 Jahre alt, und die Änderung dauert vllt 1 Minute ;-).

Irgendwann wird dein Reload überlaufen :yes:

Lange Rede, kurzer Sinn: Richtige DB-Optimierung ist das Addon nicht, aber entlastet die DB wenigstens etwas, also doch sinnvoll.

DJschatz27
10.11.2010, 00:27
haha ich hab keine ahnung von änderungen mit den sachen bräuchte shon hilfe dabei bin ja kein progger der sowas aus dem hangelenk macht sonst würd ich ja nicht immer fragen müßen

aber das mit dem teil funzt nicht weil ich nicht weiß was ich wie und wo machen muß

DJschatz27
10.11.2010, 17:26
So hab mich hier im Forum noch mal durchgewüllt und bin fündig geworden

jetzt funktionierts zwar etwas umständlich mit obtimieren weil im admin der cron nicht sichtbar ist unter crons aber habs anders gelöst und noch eine frage muß ich hier bei dem teil wo xx steht was eintragen oder das was ich möchte hier>> '20'<< eintragen ??

$buchlimit = '20'; // Buchungen welche aelter als XX Tage sind, aus Datenbank loeschen.

Und wäre gut wenn die DB Optimize 2 mal auf den aktuellen stand gebracht wird weil ich hab die jetzt anders als die man aus dem downloadbereich downloaden kann

Und Nochmal an alle Danke für die hilfreichen aussagen und Tipps

hankfromhelvete
10.11.2010, 17:31
$buchlimit = '20'; // Buchungen welche aelter als XX Tage sind, aus Datenbank loeschen.

20 bedeutet, dass die Buchungen 20 Tage gespeichert werden. Alle Buchungen die älter als 20 Tage sind, werden gelöscht.

Willst du die Buchungen 30 Tage speichern, musst du 20 in 30 ändern, bei 90 = 90, usw.

DJschatz27
10.11.2010, 17:45
Danke für den Tip dann weiß ich ja bescheid und kann frage wenn ich die buchungen bonuspoints noch hinzufügen möchte muß ich das dann so machen

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

und muß ich hier noch eine anlegen oder reicht die eine buchlimit

// Am NAchfolgenden Abschnitt ggf. Einstellungen vornehmen
$buchlimit = '20'; // Buchungen welche aelter als XX Tage sind, aus Datenbank loeschen.

und kann man noch was sinvolles einfügen???

hankfromhelvete
10.11.2010, 19:17
db_query ("DELETE FROM ".$db_prefix."_buchungen_bonuspoints WHERE buchungszeit < ".(time()-($buchlimit*86400)));

Wenn der Timestamp auch unter buchungszeit gespeichert wird, sollte das so funktionieren. Eine neue Variable wie $buchlimit musst du nur definieren, wenn die Buchungen für Bonuspoints kürzer oder länger gespeichert werden sollen.

cr00sy
15.11.2010, 20:19
Hab da auch mal eine frage zu. Das hier kommt in die DB, das habe ich jetzt so mal zusammengebastelt, ich hoffe das dass so stimmt.



INSERT INTO `vms_crons` ( `cron` , `laufzeit` , `datei` , `bezeichnung` )
VALUES ('ext_cron', '0', 'crons/db_optimize.php', 'Datenbank optimieren');
Dann kann ich ja den Cron starten, aber da passiert nichts. Also alle alten einträge und co. sind noch vorhanden. Was mir nun aufgefallen ist, ist das der Cron keine Laufzeit hat, kann es daran liegen? Wenn ja, was wird da in die Laufzeit eingetragen?

Folgendes wird mir auch nicht angezeigt:


echo 'Dieser Cronjob stammt von Sebastian Hoinkes ';
echo '- <a href="http://www.cash4more.de'; echo '" target="_blank">www.Cash4more.de</a><br />';
die('<font color="green">Cron erfolgreich gelaufen!</font>');


Benutze die V.2 für Vms 1.2 und habe das Vms 1.2.4 am laufen.

Sam2004
15.11.2010, 21:02
Hab da auch mal eine frage zu. Das hier kommt in die DB, das habe ich jetzt so mal zusammengebastelt, ich hoffe das dass so stimmt.



INSERT INTO `vms_crons` ( `cron` , `laufzeit` , `datei` , `bezeichnung` )
VALUES ('ext_cron', '0', 'crons/db_optimize.php', 'Datenbank optimieren');
Dann kann ich ja den Cron starten, aber da passiert nichts. Also alle alten einträge und co. sind noch vorhanden. Was mir nun aufgefallen ist, ist das der Cron keine Laufzeit hat, kann es daran liegen? Wenn ja, was wird da in die Laufzeit eingetragen?

Folgendes wird mir auch nicht angezeigt:


echo 'Dieser Cronjob stammt von Sebastian Hoinkes ';
echo '- <a href="http://www.cash4more.de'; echo '" target="_blank">www.Cash4more.de</a><br />';
die('<font color="green">Cron erfolgreich gelaufen!</font>');
Benutze die V.2 für Vms 1.2 und habe das Vms 1.2.4 am laufen.

Dein Cron hat ja '0' als Laufzeit, und ist prinzipiell Jacke wie Hose. Wenn der Cron das erste mal richtig gelaufen ist, gibts auch einen Eintrag bei der Laufzeit.

Man müsste mal den Cron an sich sehen bzw. den Inhalt, um die Ursache zu sehen, weshalb er nicht läuft.

Dein "Copyright", ist da nicht hilfreich^^

LG

cr00sy
15.11.2010, 21:16
Man müsste mal den Cron an sich sehen bzw. den Inhalt, um die Ursache zu sehen, weshalb er nicht läuft.

LG




<?
// 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 = '30'; // Buchungen welche aelter als XX Tage sind, aus Datenbank loeschen.
$inaktivlimit = '364'; // 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 an den Support 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();
echo 'Dieser Cronjob stammt von Sebastian Hoinkes ';
echo '- <a href="http://www.cash4more.de'; echo '" target="_blank">www.Cash4more.de</a><br />';
die('<font color="green">Cron erfolgreich gelaufen!</font>');
?>


Das ist der Cron..

Masterphil
15.11.2010, 22:02
Der von dir verwendete Cron klappt so mit dem VMS1.2 nicht.

Es müssen ein paar Sachen entfernt werden.

Einfach mal Suche benutzen, wenn nicht slebst in diesem Threat hier die Lösung verlinkt ist.

JP hatte letztens die korrekte Änderung gepostet.

MfG

Gecko1
16.11.2010, 11:22
hi,

du musst aus dem Cron folgendes raus machen

// Die Funktionsdatei einbinden
@require_once ('../lib/functions.lib.php');

db_connect();
und
db_close();

Danach sollte dein Cron laufen

Mfg

DJschatz27
04.02.2011, 19:37
Eine frage wäre es möglich bei


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

ein datum mit einzufügen wo man genau sieht wann ein usr gesperrt wurde????

jpwfour
04.02.2011, 19:46
Die Zeile:

$sperrhinweis = 'Account wegen inaktivit&auml;t gesperrt! Bitte an den Support wenden!'; // Sperrhinweis bei Inaktivitaets-Sperrung!bearbeiten, bspw.so:


$sperrhinweis = 'Account wegen inaktivit&auml;t am '.date('d.m.y').' um '.date('H:i:s').' gesperrt! Bitte an den Support wenden!'; // Sperrhinweis bei Inaktivitaets-Sperrung!

DJschatz27
04.02.2011, 22:33
jpwfour

Ich Danke dir dafür

DJschatz27
06.02.2011, 04:07
Ich hätte noch eine frage

und zwar ist es möglich oder sinnvoll die vms_gebuchte_werbung Tabelle auch per cron zu

verkleinern ????

Hardy
06.02.2011, 08:12
In wie fern verkleinern? Werbung die abgelaufen ist wird doch durch die interface gelöscht :suspicious:

DJschatz27
06.02.2011, 15:37
in der db sind so viel gebuchte werbungen drin und ich würd da gerne einmal täglich die liste verkleinern weiß nicht ob das sinvoll ist weil die momentan über 18000 einträge hat wird immer größer nicht kleiner

jpwfour
06.02.2011, 22:53
Sofern man sie verkleinern kann, evtl. sind es ja alles genutze Einträge?

Es kann sein, dass ein Cron abgelaufene Kampagnen nicht richtig löscht, oder bei dir viele Kampagnen auf der Backlist landen, die bleiben afaik für immer drin.

Da man aber nicht feststellen kann, wann sie auf die Blacklist gesetzt wurden, kann man auch nur schwer entscheiden, wann man solche Einträge löscht....

Das sollte man also höchstens 1x / Monat machen


DELETE FROM vms_gebuchte_werbung WHERE status=2Und danach sich auf viele Framebrecher Meldung etc einstellen, die alle schonmal gemeldet wurden :wink:

Wenn man ein WMS drin hat, sind die Daten in der Tabelle ja noch etwas "sensibler", dann am besten gar nicht.

Evtl. kann man auch alle Kampagnen mit menge=0 löschen, könnte ja sein das ein Cron solche trotzdem noch einbucht. Aber auch wieder kritisch mit WMS, die User sollen ja auch abgelaufene Kampagnen nachbuchen können.

-> Am besten die Optimierung hier sein lassen, wenn man nicht genau weis, was man im speziell für die eigene Seite zugeschnittenen Einzelfall tut!

DJschatz27
06.02.2011, 23:54
oki dann weiß ich bescheid weil sowas muß man ja erst wissen

Dank für die Antwort

Most_Wanted
22.04.2011, 17:14
War hier gerade am rumbasteln, falls jemand für seine USA-Slots die Gamebuchungen per Cron optimieren möchte, hier der Schnippsel dazu:

nach

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



das hier einfügen



// Buchungen für USA-Slots (mit Cache) optimieren
db_query ("DELETE FROM universal_cache_log WHERE datum < ".(time()-($buchlimit*86400)));