2017-05-31 10 views
0

Ich habe einen Tisch Anruf onlinenow. in dieser Tabelle enthalten onlineId (INT), onlineIP (INT) und onlineDateTime (TimeStamp). Diese Tabelle wird jedes Mal eingefügt, wenn der Client die Site besucht, und onDateTime wird bei jeder Seitenaktualisierung aktualisiert.Wie löscht man nach jeweils 15 Minuten Daten aus der MySQL-Tabelle?

Das Problem ist also, wie man ein Daten aus der Tabelle zu löschen onlinenow wenn onlineDateTime + 15 Minuten Beispiel:

ich die Seite um 08:00 Uhr besuchen und meinen Browser schließen, so dass der onlineDateTime wird nicht mehr aktualisiert werden erhalten und nach 08 : 15 die Daten

Hier ist mein Code, der Einsatz und Aktualisierungstabelle löschen Griff onlinenow:

if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
$ip = $_SERVER['HTTP_CLIENT_IP']; 
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
$ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
} else { 
$ip = $_SERVER['REMOTE_ADDR']; 
} 
$errMsg = ''; 
if(empty($errMsg)) { 
    try { 
      $check = $connect->prepare("SELECT * FROM onlinenow WHERE onlineIP = '$ip'"); 
      $check->execute(); 
      $dataonline = $check->fetch(PDO::FETCH_ASSOC); 
      if ($dataonline == true) { 
       $stmt = $connect->prepare("UPDATE onlinenow SET onlineDateTime = '$naw' WHERE onlineIP = '$ip'"); 
       $stmt->execute(); 
      }else{ 
       $stmt = $connect->prepare('INSERT INTO onlinenow (onlineIP, onlineDateTime) VALUES (:onlineIP, :onlineDateTime)'); 
       $stmt->execute(array(
        ':onlineIP' => $ip, 
        ':onlineDateTime' => $naw 
        )); 
      } 

     } 
    catch(PDOException $e) { 
      $errMsg = $e->getMessage(); 
     } 
} 

Was muss ich tun, um dieses Problem zu lösen?

Dank

+2

Verwenden Sie den Cron-Job, um eine Aufgabe zu planen. –

+0

Neben Cron-Job ist das möglich, einen Code zu machen, der mit diesem Problem umgehen kann? –

+0

für welchen Zweck müssen Sie das Ergebnis von Online-Nutzern nehmen? –

Antwort

0

Sie müssen eine Datei schreiben, in dem Sie die Funktionalität hinzufügen, einen Datensatz zu löschen.

Dann fügen Sie die Datei in Ihrem cPanel -> Cron-Jobs -> eingestellte Zeit nach jeder 15 Minuten laufen

Sie Ihre E-Mail an dieser Schnittstelle hinzufügen können so nach alle 15 min cron-Job ausgeführt, gelöschte Datensätze und Eine E-Mail wird an Ihre E-Mail gesendet.

+0

Wie verwende ich diesen Cron-Job auf meinem Hosting dort kein Cronjob-Menü. –

+0

Definitiv wird es sein. Sie können 'cron' suchen. Übrigens, welches Hosting verwenden Sie? –

+0

ich benutze cloudways –

0

Sie müssen einen Cron-Scheduler einrichten, der alle 15 Minuten ausgeführt wird. Hier ist ein Beispiel dafür.

*/15 * * * * - das bedeutet, wird es laufen alle 15 Minuten

*/15 * * * * /path/to/php deleteRecords.php

Unten deleteRecords.php ist:

<?php 

mysql_query("DELETE FROM TABLE_NAME WHERE CONDITIONS"); 

?> 
+0

owh also, was diese cron tun wird triger eine Datei, die ich jemals x Minute mache ich setze es? –

+0

Dieser Cron wird die PHP-Datei alle 15 Minuten ausführen. Sie können Ihren Code/Ihre Logik in dieser PHP-Datei haben, die alle 15 Minuten ausgeführt werden soll. –

+0

owh ok danke für deine hilfe –

0

Sie können diese Abfrage wie schreiben

DELETE Von onlineNOW WHERE ADDDATE (onlineDateTime, INTERVAL 15 MINUTE) < = NOW();

Diese Abfrage müssen Sie alle 15 Minuten in Cron-Jobs ausführen.

+0

danke für deine hilfe –

0

Sie müssen onlineDateTime aktualisieren, wenn der Benutzer den Browser direkt schließt.
Lösung: Notwendigkeits Cron-Jobs in offline.php

Schreiben Sie löschen Code einzustellen diesen Dateinamen mit Datei fullpath gesetzt in Ihrem cPanel Cron-Jobs -> Cron-Jobs -> serverpath.offline.php du anrufen Cron-Job alle 15 Minuten, so dass Sie Cron-Job Ausführungszeit 15 Minuten

**delete record onlinedateTime is greater than 15 minute** 

offline festlegen müssen.php

$ query = "LÖSCHEN VON online_now WHERE onlinedateTime < (JETZT() - INTERVAL 15 MINUTE)"; mysqli_query ($ query);

+0

danke für die erklärung –

Verwandte Themen