Anzeige - [Hier werben / Mediadaten]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
> 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: 237
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
PMUsers Website
Top
 
 
Severin Fink
#2 Geschrieben am: So 12.08.2007, 13:34 (+00:37)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 93
Mitglied seit: 5.06.2006


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:
CODE

//einfügen
mysql_query("Insert INTO table (Date) VALUES (NOW())");
//Date ist dabei z. B. vom Typ Datetime

//löschen
mysql_query("Delete FROM table WHERE Date<DATE_SUB(NOW(),INTERVAL 5 HOUR)");



Severin

edit: kleine Anmerkung zu deinem Code
CODE
  $where = ($sekunden < $minus);

das liefert entweder true oder false zurück

dann wird
CODE
 = ".$where
nie funktionieren
du meinst wahrscheinlich:
CODE
if($sekunden < $minus)
{
  $delete = mysql_query("DELETE FROM `TABELLE` WHERE TIME = ".$dbrow['TIME']) or die("Fehler!");
...

Top
PMEmail PosterICQMSN
Top
 
Duvi
#3 Geschrieben am: So 12.08.2007, 13:35 (+00:00)
Report PostQuote Post

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

Gruppe: Member (aktiv)
Beiträge: 499
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
 
Sascha Ahlers
#4 Geschrieben am: So 12.08.2007, 15:08 (+01:32)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1699
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.


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
pl_90
#5 Geschrieben am: So 12.08.2007, 15:35 (+00:27)
Report PostQuote Post

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

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


Wow... Danke Euch beiden! Es hat funktioniert! Danke schön! smile.gif biggrin.gif


--------------------
Top
PMUsers Website
Top
 
pl_90
#6 Geschrieben am: So 12.08.2007, 15:37 (+00:02)
Report PostQuote Post

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

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


hm? was hat jetzt md5 damit zu tun? verstehe ich nicht ganz was du meinst..


--------------------
Top
PMUsers Website
Top
 
pl_90
#7 Geschrieben am: So 12.08.2007, 19:17 (+03:39)
Report PostQuote Post

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

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


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


--------------------
Top
PMUsers Website
Top
 
Sascha Ahlers
#8 Geschrieben am: So 12.08.2007, 20:35 (+01:18)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1699
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).


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
pl_90
#9 Geschrieben am: So 12.08.2007, 20:48 (+00:12)
Report PostQuote Post

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

Gruppe: Member (aktiv)
Beiträge: 237
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
PMUsers Website
Top
 
Sascha Ahlers
#10 Geschrieben am: So 12.08.2007, 22:05 (+01:16)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1699
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


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
pl_90
#11 Geschrieben am: So 12.08.2007, 22:10 (+00:05)
Report PostQuote Post

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

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


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


--------------------
Top
PMUsers Website
Top
 
Sascha Ahlers
#12 Geschrieben am: So 12.08.2007, 22:32 (+00:22)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1699
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.


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
nitrit
#13 Geschrieben am: Mo 13.08.2007, 00:18 (+01:45)
Report PostQuote Post

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

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


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


--------------------
Top
PMEmail Poster
Top
 
pl_90
#14 Geschrieben am: Mo 13.08.2007, 14:55 (+14:37)
Report PostQuote Post

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

Gruppe: Member (aktiv)
Beiträge: 237
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
PMUsers Website
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/19987

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Interessantes PDF - Daten & Fakten Mark_L 149 0 Do 6.11.2008, 19:59
Shell: Daten auf externen Server kopieren G.P. 176 6 Mo 20.10.2008, 13:41
88 Prozent der IT-ler würden Daten stehlen jAuer 282 4 Mo 6.10.2008, 09:37
DB-Daten via SMS anfordern Ronald Nickel 199 10 Mo 1.09.2008, 13:00
[V] Exklusives Wordpress Theme, 11 Stunden r0man.de 361 5 Mi 20.08.2008, 19:55
Beim Arbeitgeber des Schuldners Daten einfordern nitrit 363 4 Di 12.08.2008, 17:35
Produktdaten, CSV-Daten einbinden Ivo 5110 19 Sa 9.08.2008, 20:23
Alle Dateien mit bestimmten Anfang löschen? BartTheDevil89 188 4 Mo 14.07.2008, 14:14
Wie lange bleiben Daten bei Google auffindbar? re.fa 362 6 Sa 31.05.2008, 15:11
Scripte komplett löschen Peter-Alexander 216 10 Mo 12.05.2008, 15:07




Anzeige - [Hier werben / Mediadaten]



Anzeigen


[Hier werben / Mediadaten]