Anzeige - [Hier werben]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
Diskussion

Daten jede X Stunden löschen

Klappt irgendwie nicht ??

pl_90
  Geschrieben am: So 12.08.2007, 12:57
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 243
Mitglied seit: 29.03.2007


Hey..
Ich möchte Daten aus der MySQL jede X Stunden löschen dabei soll das Script erst checken ob ein Datensatz schon X Stunden "lebt" biggrin.gif ... Ich habe bis jetzt so etwas, aber irgendwie funtioniert das nicht, es zeigt mir "OK" aber es wird nichts gelöscht. Es sollte durch time() geschehen, denn das gilt für einen Bestätigungscode der nach X Stunden ablaufen soll. wink.gif

Mein Code ist:

CODE

 $cron_zeit = 24;
 $sekunden = (($cron_zeit-1)*60*60);
 $zeitnow  = time();

 $dbabfr   = mysql_query("SELECT * FROM `TABELLE`");


 while ($dbrow = mysql_fetch_array($dbabfr)) {  

   $minus = floor($zeitnow-$dbrow['TIME']);
   $where = ($sekunden < $minus);

   $delete = mysql_query("DELETE FROM `TABELLE` WHERE TIME = ".$where) or die("Fehler!");

   if ($delete) {
     echo "OK, ".date("d.m.Y, H:i:s")."<br>";
   }  

 }


Ist das überhaupt richtig? kann mir jemand bitte helfen. Danke schön.. smile.gif
Top
PM
Top
 
 
Duvi
#2 Geschrieben am: So 12.08.2007, 13:35 (+00:37)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 598
Mitglied seit: 4.10.2006


QUOTE
WHERE TIME = ".$where


ohne deinen code jetzt im detail nachzuvollziehen, sagt mir mein gefühl das das mit dem "=" nicht richtig sein kann. du willst doch ein "<" ?!

machs einfach:

CODE

DELETE FROM TABELLE WHERE TIME < DATE_ADD(NOW(), INTERVAL -X HOUR);


Für X trägst du die gewünschten Stunden ein.

http://dev.mysql.com/doc/refman/5.1/de/dat...-functions.html
Top
PMEmail Poster
Top
 

#3 Geschrieben am: So 12.08.2007, 15:08 (+01:32)
Report PostQuote Post

AyomRank 9
Group Icon 2 Gruppe: Moderator, Experte

Gruppe: Moderator, Experte
Beiträge: 2822
Mitglied seit: 27.12.2004


QUOTE (Severin Fink @ So 12.08.2007, 14:34)
CODE

$xStunden=5;//alles was älter als 5 Stunden ist
mysql_query("DELETE FROM `TABELLE` WHERE TIME < ".time()-$xStunden*3600);


Ich würde aber eher mit NOW() in sql arbeiten, also:
[...]

Ich nicht, ich möchte i.d.R. die Last vom DB-Server nehmen und so soll er sich nicht mit unnötigen Funktionen abkämpfen, sondern nach Möglichkeit nur stumpf nach Datensätze suchen. Drum würde ich auch nur in sehr wenigen Ausnahmefällen die MD5() Funktion von MySQL nutzen.
Außerdem gibt es teilweise Problembestellungen, die sich besser mit einer Programmiersprache überbrücken lassen als mit einer Datenbankabfrage, welche teilweise erst beim Umzug erhebliche Probleme bereiten können.
Top
PMEmail PosterUsers Website
Top
 
pl_90
#4 Geschrieben am: So 12.08.2007, 15:35 (+00:27)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 243
Mitglied seit: 29.03.2007


Wow... Danke Euch beiden! Es hat funktioniert! Danke schön! smile.gif biggrin.gif
Top
PM
Top
 
pl_90
#5 Geschrieben am: So 12.08.2007, 15:37 (+00:02)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 243
Mitglied seit: 29.03.2007


hm? was hat jetzt md5 damit zu tun? verstehe ich nicht ganz was du meinst..
Top
PM
Top
 
pl_90
#6 Geschrieben am: So 12.08.2007, 19:17 (+03:39)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 243
Mitglied seit: 29.03.2007


Achso ja...
Wie kann man es jede X Stunden den ^^ Befehl ohne Cronjob ausführen lassen?
Top
PM
Top
 

#7 Geschrieben am: So 12.08.2007, 20:35 (+01:18)
Report PostQuote Post

AyomRank 9
Group Icon 2 Gruppe: Moderator, Experte

Gruppe: Moderator, Experte
Beiträge: 2822
Mitglied seit: 27.12.2004


QUOTE (pl_90 @ So 12.08.2007, 16:37)
hm? was hat jetzt md5 damit zu tun? verstehe ich nicht ganz was du meinst..

Last auf den MySQL-Server für die Erstellung des MD5-Hashes:
CODE
$sql = 'select * from userid = ' . intval($userid) . ' AND password = MD5(' . mysql_real_escape_string($password) .  ')';



Gleiche Funkionalität nur ist hier die Last auf den Webserver:
CODE
$sql = 'select * from userid = ' . intval($userid) . ' AND password = ' . md5($password);



Gleiches gilt bei time() und NOW().



Nur als schlechter Workaround, so dass es nicht automatisch zu der entsprechenden Zeit gestartet wird: einfach als Bild aufrufen (bspw. von einer statischen HTML-Seite) oder bei Seitenaufruf mitausführen lassen (bei einen dynamischen Seite).
Top
PMEmail PosterUsers Website
Top
 
pl_90
#8 Geschrieben am: So 12.08.2007, 20:48 (+00:12)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 243
Mitglied seit: 29.03.2007


Achso.. Danke smile.gif
Aber das mit dem Bild will ich irgendwie nicht machen, den wenn eine Seite oft aufgerufen wird, dann das Script auch so oft die Tabelle und das ist noch schlimmeres Last als mit Now() oder so... Gibt es nicht eine andere Methode?

Und wie würdest du das ganze machen, damit der MySQL nicht so ausgelastet wird...?
Top
PM
Top
 

#9 Geschrieben am: So 12.08.2007, 22:05 (+01:16)
Report PostQuote Post

AyomRank 9
Group Icon 2 Gruppe: Moderator, Experte

Gruppe: Moderator, Experte
Beiträge: 2822
Mitglied seit: 27.12.2004


Cronjob oder notfalls wie im Workaround auf eine lokale Datenbankdatei (SQLite, DBM oder DBA) zugreifen, um zu ermitteln, wann der letzte Aufruf des Scriptes war, so wird bei einen Betreib mit mehreren Server eher der Anwendungsserver belastet statt der DB-Server, und das komplette Script nur ausgeführt, wenn die Zeit dazu gekommen ist.

Ich habe aber nicht diese Probleme, dafür habe ich meinen eigenen Server. wink.gif
Top
PMEmail PosterUsers Website
Top
 
pl_90
#10 Geschrieben am: So 12.08.2007, 22:10 (+00:05)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 243
Mitglied seit: 29.03.2007


Ich meinte das eigentlich mit dem NOW() und so.. hehe... wink.gif
Top
PM
Top
 

#11 Geschrieben am: So 12.08.2007, 22:32 (+00:22)
Report PostQuote Post

AyomRank 9
Group Icon 2 Gruppe: Moderator, Experte

Gruppe: Moderator, Experte
Beiträge: 2822
Mitglied seit: 27.12.2004


QUOTE (pl_90 @ So 12.08.2007, 23:10)
Ich meinte das eigentlich mit dem NOW() und so.. hehe... wink.gif

Dann weiß ich nicht was Du von mir willst, solange Du Dich in den Punkt nicht klar ausdrückst.
Top
PMEmail PosterUsers Website
Top
 
nitrit
#12 Geschrieben am: Mo 13.08.2007, 00:18 (+01:45)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 458
Mitglied seit: 8.08.2007


Ja, aber wieso nicht einfach Cronjob? Wäre doch das einfachste smile.gif


--------------------
Gleichwohl welchen Wert ein Text misst - mehrfache Verwendung von Ausrufungs- oder Fragezeichen gleicht einer Unterschrift, dass man nicht ernst zu nehmen sei.
--------------------
activenode - Webdesign und Mobilapplikationen
StreamDrag - hear your favorite music
Heise- und Golem-Knigge
Top
PMEmail Poster
Top
 
pl_90
#13 Geschrieben am: Mo 13.08.2007, 14:55 (+14:37)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 243
Mitglied seit: 29.03.2007


Hi.. Ich weiß, ich hab schon ein Cronjob... wink.gif Ich frag das nur so: Ob es man jede X Stunden irgendwie ausführen könnte, zB durch ein Serverprozess oder so.. wink.gif
Top
PM
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Adwords - Änderungsverlauf löschen? cydia 398 0 So 5.10.2014, 22:38
Google Places - Falsche Daten Flash 2230 8 Di 18.02.2014, 18:04
mySQL JOIN über 600.000 Daten UBerer 652 3 Do 21.03.2013, 18:16
Angaben/Daten von Website automatisch auslesen? Daniel Dressler 847 1 Mo 1.10.2012, 13:16
Google führt strukturierte Daten ins WMT ein Michael Schöttler 1100 0 Mi 29.08.2012, 11:55
E-Mail Daten Veröffentlichung, jemand betroffen? Ronny84 1133 2 So 15.07.2012, 01:38
Wordpress inaktive User löschen? Ronny84 1111 2 Di 27.03.2012, 21:06


Günstig werben auf Ayom:
Kontakt: ayom@small-n-tall.com



Anzeigen

Textlinks kaufen oder anbieten





[Hier werben]

 

Statistiken:
Top 10 Autoren heute
Top 50 Autoren insgesamt