PHP Datei zeitgesteuert aufrufen (Cronjob ja/nein)

DaSuckOOr

Mitglied
Hallo zusammen,

ich plane eine Anwendung, bei der sich user einloggen und ihr profile "online" schlaten können. Danach können sie von anderne usern kontaktiert und gefunden werden. (grob)
Jetzt ist es so, wenn sich ein user einloggt und "online" geht, muss er auswählen wie lange er heute plant "online" zu bleiben. sagen wir mal bis 17 Uhr. Jetzt möchte ich gerne um 17 uhr eine Benachrichtigung an den Benutzer schicken "willst du noch länger online bleiben?".. die Benachrichtigungen schicke ich per pusher an den jeweiligen client, dass ist nicht das Problem.

Aber wie mache ich es am besten das diese push benachrichtigung auch genau um 17 uhr ausgelöst wird? Ich könnte ja nach dem "online" gehen einen cronjob anlegen (17 Uhr). Nur weiß ich nicht wie performant das ganze bei ca. 1000 Usern noch ist? Da müssten ja dann auch zeiten zusammengefasst werden (wenn user a um 17 uhr und user b auch um 17 uhr)

Ich könnte das arbeitszeitende 17 uhr ja auch in der DB hinterlegen und dann ca. 5 minütlich die DB belästigen******

hat jemand eine Idee?

Danke!

Gruß
 
Natürlich so rum denken. Es gibt einen Cronjob, den Du jede Minute auslöst (abhängig von Deiner Auflösung, vielleicht reicht auch eine 5 Minutentaktung). Dieser schaut in die DB nach anstehenden Terminen. Eine SQL-Anfrage pro 5 Minuten ist doch kein Beinbruch. uU stellst Du den Termin bzw die Cron auf 1 Minute vor Termin (immer um x.y4h) - wenn es zu "Genauigkeitsproblemen" kommt..

Das ist die deutlich bessere Lösung, anstatt die Cron zu füllen, zu ändern, zu löschen.

mfg chmee
 
ich denke 5 min. ist schon auch noch ok.. dieses offline-setzen ist nicht zeitkritisch!
Wie sieht es denn mit der performance aus? habe da keinerlei gespür dafür. Im moment würde alles auf einer maschine laufen (cronjob, mysql-db, php-applikation)
 
Ich glaube für sowas einfaches reicht evt sogar eifnach in die Datenbank das Datum noch mit zu speichern. Dem jeweils anderen wird die nachricht eben erst ab 17h angezeigt dann. (Das geht ja noch bei so eifnachen Abhängigkeiten, hier nur von der Zeit)
 
Der eigentliche Termin steht doch eh drin. Man könnte der SQL-Abfrage lediglich sagen, dass alle Termine, die in den nächsten 10 Minuten eintreten, versendet werden sollen (und am Besten noch eine Flag setzen, als "versendet" markiert, damit es in den nächsten 5 Minuten nicht noch einmal versendet wird)

mfg chmee
 
Befindet sich denn der Nutzer auf deiner Website während er 'online' ist?
Wenn ja, könntest du ein klientseitiges Skript im Browser laufen lassen.

Ansonten sollte dein RDBMS 1000 Datensätze locker schaffen zu filtern; auch die kurzzeitige Sperre beim Schreiben sollte kein Problem darstellen.
 

Neue Beiträge

Zurück