zeitdifferenz ermitteln
chris
- php
hallo ng,
wie kann ich mit php die zeitdifferenz zwischen 2 timestamps ermitteln? ich möchte damit automatisch datensätze löschen, die älter als 30 minuten sind und aufgrund von fehlabrufen der user in der datenbank verblieben sind ..
dank im voraus
mfg
chris
Hallo!
wie kann ich mit php die zeitdifferenz zwischen 2 timestamps ermitteln? ich möchte damit automatisch datensätze löschen, die älter als 30 minuten sind und aufgrund von fehlabrufen der user in der datenbank verblieben sind ..
Aus dem Manual zu time (http://www.php3.de/manual/de/function.time.php):
"time -- Gibt den gegenwärtigen UNIX-Timestamp/Zeitstempel zurück
Beschreibung
int time ( void)
Gibt die seit Beginn der UNIX-Epoche (Januar 1 1970 00:00:00 GMT) bis jetzt vergangenen Sekunden zurück."
Wie rechnet man die Differenz zwischen zwei Zahlen aus? Siehe http://www.php3.de/manual/de/language.operators.arithmetic.php
Wieviele Sekunden sind 30 Minuten? Ein kleiner Tipp: 1 Minute hat 60 Sekunden!
Jetzt hast Du die tatsächliche Zeitdifferenz in Sekunden, und die von Dir definierte maximale Zeitdifferenz. Was fehlt? Richtig, eine Prüfung ob die tatsächliche Zeitdifferenz größer oder kleiner ist als das definierte Maximum. Behilflich sind dabei:
http://www.php3.de/manual/de/control-structures.php#control-structures.if und
http://www.php3.de/manual/de/language.operators.comparison.php
Viele Grüße
Andreas
Hallo!
<cut>
Viele Grüße
Andreas
besten dank für die ausführliche antwort :)
das hat mir sehr geholfen .. danke nochmals
gruß
chris
wie kann ich mit php die zeitdifferenz zwischen 2 timestamps ermitteln? ich möchte damit automatisch datensätze löschen, die älter als 30 minuten sind und aufgrund von fehlabrufen der user in der datenbank verblieben sind ..
Aus dem Manual zu time (http://www.php3.de/manual/de/function.time.php):
"time -- Gibt den gegenwärtigen UNIX-Timestamp/Zeitstempel zurück
Beschreibung
int time ( void)Gibt die seit Beginn der UNIX-Epoche (Januar 1 1970 00:00:00 GMT) bis jetzt vergangenen Sekunden zurück."
Prinzipiell richtig, aber sinnvoller wäre hier vielleicht, diese Arbeit einfach der (anscheinend eingesetzten) Datenbank aufzuhalsen, etwa so (SQL):
delete ... where zeit<now()-interval 30 minute
Wie immer gilt: Ein kurzer, neugieriger Blick in die Anleitung(en) fördert so manches zu Tage, ohne daß man darauf warten müsste, von jemandem an die Hand genommen zu werden :)
Gruß,
soenk.e
Hi!
Prinzipiell richtig, aber sinnvoller wäre hier vielleicht, diese Arbeit einfach der (anscheinend eingesetzten) Datenbank aufzuhalsen, etwa so (SQL):
delete ... where zeit<now()-interval 30 minute
Ja, das hatte ich auch überlegt, aber das Thema war ja PHP. Ändert aber nichts daran das diese Variante einfacher und schneller ist.
Wie immer gilt: Ein kurzer, neugieriger Blick in die Anleitung(en) fördert so manches zu Tage, ohne daß man darauf warten müsste, von jemandem an die Hand genommen zu werden :)
Genau! Daher:
Bitte folgende Links bookmarken:
http://www.php3.de/manual/de/
http://de.mysql.com/documentation/mysql/bychapter/ (falls es sich bei der Datenbank um mySQL handelt, was ich vermute)
Vielleicht hilft in diesem Zusammenhang auch: http://www.php-faq.de/q/q-mysql-loeschen.html
(http://www.php-faq.de/ auch bookmarken ;-) )
Viele Grüße
Andreas
Guude!
wie kann ich mit php die zeitdifferenz zwischen 2 timestamps ermitteln?
Mit Subtrahieren? Ich schätze mal, dass die Timestamps im UTC vorliegen, oder? $differenz = $TS2 - $TS1;
ich möchte damit automatisch datensätze löschen, die älter als 30 minuten sind und aufgrund von fehlabrufen der user in der datenbank verblieben sind ..
$TS_datensatz = ... //Wert aus Datenbank holen
$jetzt = date("U"); // aktueller Timestamp
$differenz = $jetzt - $TS_datensatz;
if($differenz > 1800){
... // Datensatz löschen
}
Mehr zur Verwendung von date() findest Du unter http://www.php.net/manual/de/function.date.php.
LG ausm Hesseland
Lemmy