chris: zeitdifferenz ermitteln

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

  1. 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

    1. Hallo!

      <cut>

      Viele Grüße
      Andreas

      besten dank für die ausführliche antwort :)
      das hat mir sehr geholfen .. danke nochmals

      gruß
      chris

    2. 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

      1. 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

  2. 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