PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Reloads löschen sich nicht aus der DB :( VMS 1.2



didith1207
15.01.2008, 02:36
Hallo ich habe das VMS 1.2

ich habe mal meine Loseseite genauer unter die lupe genommen und festgestellt das in der datenbank unter *vms_reloads* über 400k abgelaufene reloads drinnen stehen die schon minimum 1 monat abgelaufen sind manche davon sogar 3 monate :(
Zeige Datensätze 487930 - 487948

Wo kann das problem liegen löschen die sich nicht automatisch?

pummuk
15.01.2008, 03:42
es gab mal ein cron hier... war aber für´s vms1.1


<?
$timel = time() - 172800;
@require_once ('../lib/functions.lib.php');
db_connect();
db_query("DELETE FROM `vms_reloads` WHERE `bis` <='".$timel."'");
db_close();
echo'VMS_Reloads erfolgreich optimiert';
?>



weiß nicht wie es für´s vms 1.2 lauten müßte...

didith1207
15.01.2008, 16:55
Vielen dank! :) ich habs nun so gelöst :

ich hab mir einen cron fürs VMS 1.2 erstellt mit dem namen reloadcron.php:


<?
$timel = time() - 172800;
db_query("DELETE FROM `vms_reloads` WHERE `bis` <='".$timel."'");
echo'VMS_Reloads erfolgreich optimiert';
?>

dann habe ich für die db den cron eingefügt :
INSERT INTO `vms_crons` VALUES ('','ext_reloadcron', 0, 'crons/reloadcron.php', 'Reloads Loeschen');

Beim abrufen ( dauerte einige sekunden da er ja über 400k einträge löschen mußte) bekam ich folgende meldung :

VMS_Reloads erfolgreich optimiertCron gelaufen

und siehe da in der DB wurden alle einträge in vms_reloads die länger als 48h abgelaufen waren gelöscht :)

Kann ich das so lassen? ist das eine feine lösung?

Gremlin
16.01.2008, 14:39
Eleganter wäre es nur die wirklich abgelaufenen Reloads zu löschen da manche auch ggf. länger als 48 Stunden sind.



<?php
db_query('DELETE FROM '.$db_prefix.'_reloads WHERE bis <= '.time().'') or die('Löschen fehlgeschlagen '.mysql_error());
db_query('OPTIMIZE NO_WRITE_TO_BINLOG TABLE '.$db_prefix.'_reloads') or die('Optimierung fehlgeschlagen '.mysql_error());
?>Ausserdem: time() ist kein String sondern ein Integer deshalb sind die doppelten Anführungszeichen falsch.

Ausserdem statt db_query(""); einfach db_query(''); nutzen dann muss php nicht nochmal den kompletten SQL Befehl parsen, beschleunigt das ganze auch nochmal minimal :smilewinkgrin:

Da beim Reloads löschen viele Datensätze gelöscht werden sollte die Tabelle danach optimiert werden

Gruß
Gremlin

didith1207
16.01.2008, 23:31
aja vielen dank :)

SebbyPHM
18.01.2008, 06:55
Eleganter wäre es nur die wirklich abgelaufenen Reloads zu löschen da manche auch ggf. länger als 48 Stunden sind.



<?php
db_query('DELETE FROM '.$db_prefix.'_reloads WHERE bis <= '.time().'') or die('Löschen fehlgeschlagen '.mysql_error());
db_query('OPTIMIZE NO_WRITE_TO_BINLOG TABLE '.$db_prefix.'_reloads') or die('Optimierung fehlgeschlagen '.mysql_error());
?>Ausserdem: time() ist kein String sondern ein Integer deshalb sind die doppelten Anführungszeichen falsch.

Ausserdem statt db_query(""); einfach db_query(''); nutzen dann muss php nicht nochmal den kompletten SQL Befehl parsen, beschleunigt das ganze auch nochmal minimal :smilewinkgrin:

Da beim Reloads löschen viele Datensätze gelöscht werden sollte die Tabelle danach optimiert werden

Gruß
Gremlin

fängst ja so langsam an, wie manchmal ich zu klingen :eek6:

Gremlin
18.01.2008, 14:11
fängst ja so langsam an, wie manchmal ich zu klingen :eek6:
Ja klar *grins* soll ja immerhin ordentlich werden.

wolfi86
03.07.2008, 12:03
Für die Leute, bei denen nichts passiert, denkt bitte daran, dass ihr erst eine Verbindung zur Datenbank aufbauen müsst ;)
Das sieht dann so au:


<?php
@require_once ('../lib/functions.lib.php');
db_connect();
db_query('DELETE FROM '.$db_prefix.'_reloads WHERE bis <= '.time().'') or die('Löschen fehlgeschlagen '.mysql_error());
db_query('OPTIMIZE NO_WRITE_TO_BINLOG TABLE '.$db_prefix.'_reloads') or die('Optimierung fehlgeschlagen '.mysql_error());
db_close();
echo'VMS_Reloads erfolgreich optimiert';
?>

Xenon
03.07.2008, 12:32
@wolfi : das ist für leute die das vms1.1 nutzen was gremlin da gemacht hat ist für vms1,2 :biggrin1:

dragon11
03.07.2008, 14:06
Frage: warum einen extra cron????
Habt ihr das nicht im cron db_opzimize.php drin? dieser solle doch eh stündlich laufen und die beiden befehle da noch unterzubringen, ist ja keine Hürde.

jpwfour
03.07.2008, 17:12
man kann auch einfach in die header.php folgendes einbauen:


db_query ("DELETE FROM ".$db_prefix."_reloads WHERE bis <= '".time()."'");wer aber unbedingt db anfragen sparen will kann das ganze ja noch so verändern:


if(rand(0,4)==2) db_query ("DELETE FROM ".$db_prefix."_reloads WHERE bis <= '".time()."'");

könnte vielleicht sogar besser sein, weil so immer mal wenige zeilen gelöscht werden, beim cron aufruf aber auf einmal hunderte, nur sollte natürlich ein optimize befehl dennoch immer mal wieder ausgeführt werden.

didith1207
04.07.2008, 02:29
Frage: warum einen extra cron????
Habt ihr das nicht im cron db_opzimize.php drin? dieser solle doch eh stündlich laufen und die beiden befehle da noch unterzubringen, ist ja keine Hürde.

db_opzimize.php :eek: hab noch niemals von der datei gehört wo sollte ich die finden?

Xenon
04.07.2008, 11:21
db_optimize.php 1: http://www.designerscripte.net/downloads.php?do=file&id=68
db_optimize.php 2: http://www.designerscripte.net/downloads.php?do=file&id=69

wenn du vms1.2 nutzt musst du es ggf an das anpasssen :thumb:

didith1207
05.07.2008, 13:10
vielen dank :)

the-carnage
24.07.2008, 22:16
hi kann man das auch mit anderen daten machen

meine mails haben ne eignene vms tabelle

didith1207
25.07.2008, 15:36
ja da hab ich dann noch das für mails hinzugefügt :


db_query("DELETE FROM ".$db_prefix."_reloads_mail WHERE `bis` <= '".time()."'");

Tommyzero
24.07.2009, 12:33
Hab alles hier ausgetestet trotzdem haben ich immer wieder banner die noch im reload sind:frusty: hab das vms 1.2.2

LaSa67
24.07.2009, 15:31
db_optimize.php 1: http://www.designerscripte.net/downloads.php?do=file&id=68
db_optimize.php 2: http://www.designerscripte.net/downloads.php?do=file&id=69

wenn du vms1.2 nutzt musst du es ggf an das anpasssen :thumb:

Anpassen ? Hab db_optimize v2.1 installiert, aber der Cron läuft nicht? :der:
Danke im vorab

Hardy
27.07.2009, 21:29
Anpassen ? Hab db_optimize v2.1 installiert, aber der Cron läuft nicht? :der:
Danke im vorab

Der war ja damals eigentlich auch noch für das VMS 1.1 gedacht. ob es im 1.2 noch sinn macht ist fraglich willst du es allerdings trotzdem benutzen dann lösche aus den cron:


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

// Zur Datenbank verbinden
db_connect();

und


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>');