Benachrichtigungs-System

Vayasho

Grünschnabel
Hallo,

ich habe folgende Tabellen:

notification
id, uid, site, type (enum='like','comment','accept_friendship')

notification_user
nid, uid, read_at, create_at, date

Und ich möchte ein Benachrichtigungs-System wie bei Facebook realisieren.

Nun habe ich eine Funktion notification($type) gemacht, die z.B. beim Kommentieren mit notification("comment") aufgerufen wird. Bei einem Like wird sie dann z.B. mit notification("like") aufgerufen, usw.

Jedenfalls habe ich jetzt das Problem, dass ich nicht ganz durchsehe, wie ich am effizientesten und redundanz-vermeidend realisiere, das ich als User immer benachrichtigt werde, wenn z.B. ein neuer Kommentar, Like, oder anderes neues gemacht wurde.

Ich habe bisher den Code, dass ich zuerst prüfe, ob bereits von mir und meiner uid (user_id) ein Eintrag in `notification` vorhanden ist. Wenn nicht, soll einer gemacht werden. Aber ich muss mir erstmal die Logik zusammendenken, was ich etwas kompliziert finde. Denn ich möchte ja, dass bei jedem neuen Eintrag, ich eine Benachrichtigung bekomme. Der User selbst ja nicht.

Daher würde ich mich wirklich sehr über Denkanstöße freuen, wie ihr das realisieren würdet.
 
Meines Wissenens nach benutzt Facebook ein Eventbasiertes System, ähnlich wie node.js. Das wäre eine Ansatzmöglichkeit. Sollte es aber nur PHP Sein so wäre mein Ansatz folgender, du speicherst die Letzte Notification ID die an den User übergeben wurde uns prüfst alle 5 Sekunden ob eine neuere also rein theoretisch größere ID in deiner DB vorhanden ist, ist dies der Fall kannst du ja per AJAX die Notification laden. Elegant ist das nicht aber erstmal Funktional.
 
Also, es geht mir ja nicht um die Aktualisierung bzw. dass ich keinen Page-Reload machen möchte, um neue Neuigkeiten angezeigt lassen zu bekommen. Sondern erstmal nur um die logische Struktur soetwas zu realisieren.
 
Zurück