Ankündigung

Einklappen
Keine Ankündigung bisher.

Wert nach bestimmter Zeit automatisch ändern?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wert nach bestimmter Zeit automatisch ändern?

    Hey Leute,

    momentan arbeite ich an einem kleinen Projekt und ich möchte eine Variable automatisch von PHPMyAdmin nach einer Minute unverändertheit abändern lassen.
    Das Ganze sieht in der Datenbank momentan wie folgt aus:

    Beim Einloggen wird der Wert "isonline" auf "1" gesetzt. Jedoch möchte ich nun den Wert automatisch auf "0" zurücksetzen lassen, wenn sich "LastActivity" eine Minute lang nicht geändert hat.
    Wie kann ich das am Besten machen? Mag mir das jemand erklären? Ich weiß zwar, wie ich Datenbanken und Einträge in PHPMyAdmin erstelle, jedoch weiß ich noch nicht, wie man so etwas automatisiert :/

  • #2
    Gar nicht, Dafür sind Datenbanken nicht geschaffen worden.
    Rufe ein Script auf dass das für dich erledigt.
    Das Zeitliche steuerst du dann mit einem Crontab, wenn es immer wiederkehrend mit gleichem zeitlichen Abstand erfolgen soll.
    So wie ich das sehe, ist das aber gar nicht nötig, es würde hier reichen bei jedem Zugriff auf die Seite, zu testen ob mehr als 1 Minute vergangen ist und den Wert dann zu ändern.

    Kommentar


    • #3
      Zitat von protestix Beitrag anzeigen
      Gar nicht, Dafür sind Datenbanken nicht geschaffen worden.
      Rufe ein Script auf dass das für dich erledigt.
      Das Zeitliche steuerst du dann mit einem Crontab, wenn es immer wiederkehrend mit gleichem zeitlichen Abstand erfolgen soll.
      So wie ich das sehe, ist das aber gar nicht nötig, es würde hier reichen bei jedem Zugriff auf die Seite, zu testen ob mehr als 1 Minute vergangen ist und den Wert dann zu ändern.
      Okay, dann habe ich eine andere Frage.
      Sagen wir, ich update normalerweise LastActivity mit folgendem Code:
      $setonlinesql = "UPDATE users SET LastActivity ='".$timestamp."' WHERE username = '".$username."' ";
      $resultsetonline = mysqli_query($conn, $setonlinesql);

      Wie kann ich mit einem Script das "LastActivity" von jedem Usernamen überprüfen und dafür sorgen, dass bei jedem, wo LastActivity eine Minute zurückliegt, "isonline" auf 0 setzen?

      Kommentar


      • #4
        Zitat von KazuyaX93 Beitrag anzeigen
        Wie kann ich mit einem Script das "LastActivity" von jedem Usernamen überprüfen und dafür sorgen, dass bei jedem, wo LastActivity eine Minute zurückliegt, "isonline" auf 0 setzen?
        Gar nicht, weil das nicht notwendig ist.

        Ein Attribut "isonline" in der Datenbank zu speichern ist Quatsch und außerdem redundant.

        Kommentar


        • #5
          Code:
          SET GLOBAL event_scheduler = ON;
          
          CREATE
              DEFINER = CURRENT_USER()
              EVENT `user_is_online`
              ON SCHEDULE EVERY 1 MINUTE
          DO
              UPDATE
                  user
              SET
                  is_online = 0
              WHERE
                  is_online = 1 AND
                  last_activity < DATE_SUB(NOW(), INTERVAL 1 MINUTE);

          Kommentar


          • #6
            Zitat von Blar Beitrag anzeigen
            Code:
            SET GLOBAL event_scheduler = ON;
            
            CREATE
            DEFINER = CURRENT_USER()
            EVENT `user_is_online`
            ON SCHEDULE EVERY 1 MINUTE
            DO
            UPDATE
            user
            SET
            is_online = 0
            WHERE
            is_online = 1 AND
            last_activity < DATE_SUB(NOW(), INTERVAL 1 MINUTE);
            Genau nach sowas habe ich gesucht! Vielen Dank

            Kommentar


            • #7
              Zitat von KazuyaX93 Beitrag anzeigen

              Genau nach sowas habe ich gesucht! Vielen Dank
              Du wirst irgendwann merken, daß es ein Irrtum ist und eine denkbar schlechte Lösung.
              PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

              Kommentar


              • #8
                Zitat von akretschmer Beitrag anzeigen
                Du wirst irgendwann merken, daß es eine schlechte Lösung.
                Was ist daran schlecht deine Tabelle mit unnötigen Abfragen zu belästigen?

                Kommentar


                • #9
                  Zitat von Blar Beitrag anzeigen

                  Was ist daran schlecht deine Tabelle mit unnötigen Abfragen zu belästigen?
                  Alles.
                  PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                  Kommentar

                  Lädt...
                  X