2016-11-19 5 views
-1

Ich möchte etwas wie Snapchat erstellen, das Zeile nach 24 Stunden in PHP/MySQL automatisch löschen wird. Ich habe über Cron-Jobs gelesen, aber es verlangsamt Apps, also habe ich mich gefragt, ob es andere Möglichkeiten gibt, es zu tun?Zeile nach 24 Stunden automatisch aus der Datenbank löschen

+0

'aber es kann nicht auf großen apps laufen 'Wirklich, und warum? –

+0

@u_mulder Entschuldigung meine Vagheit.Ich habe es bearbeitet :) – Murad

+1

Jetzt - 'es verlangsamt apps'. Wie? Wer hat dir das gesagt? –

Antwort

2

Was Sie aussehen ing bei etwas effektiv wie folgen aus:

DELETE FROM snaps WHERE created_at<=DATE_SUB(NOW(), INTERVAL 1 DAY) 

Solange Sie bevölkern created_at und indizieren, soll dies ziemlich schnell laufen. Wenn Sie viele Datensätze haben, und damit meine ich mehr als 100 Millionen, werden Sie brauchen Platz, dass aus:

DELETE FROM snaps ... LIMIT 10000 

Wo Sie es in Stücke von 10K tun können, oder was auch immer am besten funktioniert.

0

Während es sicherlich eine schlechte Idee wäre, einen Cron-Job für jede Zeile Ihrer Datenbank hinzuzufügen, sehe ich kein Problem, einen Cron-Job laufen zu lassen (zB) jede Stunde (oder alle 30 Minuten oder einmal Tag), der jeden Eintrag löscht, der älter als 24 Stunden ist.

Sie können außerdem sicherstellen, dass bei der Abfrage keine Einträge zurückgeschickt werden, die älter als 24 Stunden sind.

0

Um Ihre Frage, gibt es viele Möglichkeiten, es zu tun:

  1. Cron-Job (außerhalb Ihrer app)
  2. In-App (Server-Seite) Job (SetTimeout in Knoten/js, javax. swing.Timer in Java, ETC.)
  3. Gewinde + sleep (bitte, dass nicht tun)
  4. Alarmsignal (Sie sollten wahrscheinlich nicht)

Aber statt Löschen auf ein Intervall und unter Berufung auf sie, schlage ich die folgenden, wird es auch Sie die Richtigkeit der genauen 24h geben (Sie es nicht erforderlich machen könnten, aber es ist trotzdem gut):

  • Ihre Aufzeichnungen timestamped werden müssen (fast jeder Lösung erfordert dies)
  • , wenn Sie die Datensätze lesen, Datensätze herauszufiltern, die der Zeitstempel ist weniger als jetzt minus 24 Stunden
  • die Datensätze löschen (Bereinigung) auf Intervall, sagen, eines Tages, cron-Job
  • mit
Verwandte Themen