2011-01-16 10 views
0

Ich habe eine PHP-basierte Terminplanung Anwendung, die erfordert, dass bestimmte Benutzer 15 Minuten vor einer bestimmten Zeit angemeldet sind.Überprüfen, ob Benutzer vor einer bestimmten Zeit angemeldet sind

Wenn die Benutzer vergessen, sich einzuloggen, muss ihnen eine E-Mail-Erinnerung mit Hilfe eines Cron-Jobs geschickt werden.

Ich habe ein Flag in der Datenbank eingefügt, das überprüft, ob der Benutzer angemeldet ist. Dieses Flag wird bei der Anmeldung aktiviert und deaktiviert, wenn der Benutzer sich manuell abmeldet.

Was ist, wenn die Benutzersitzung abläuft? Was sollte ich im Cron-Job implementieren, um diesen Faktor zu berücksichtigen?

Antwort

1

Sie müssten Ihren eigenen benutzerdefinierten Session-Handler implementieren (wahrscheinlich mit einer Datenbank). Der Standard-Handler von PHP stellt keine Art von Überwachungs-/Ereignisbenachrichtigung bereit, mit der Sie eine abgelaufene/vergeudete Sitzung erkennen können.

Sie COULD Verwenden Sie einen externen Prozess, manuell durch die Sitzungsdateien, aber das ist etwas rassig: Die Sitzung könnte abgelaufen sein und der PHP-Garbage-Collector erreicht, bevor Ihr Überwachungsskript tut.

Vorausgesetzt, dass Sie eine "eingeloggt" -Flag in der Datenbank speichern, ist ein Cron-Job für noch nicht eingeloggte Benutzer der einfachste Weg zu gehen, aber die Planung des Jobs könnte etwas sein hässlich. Wenn Ihre festgelegten Zeiten im Wesentlichen zufällig sind, müssen Sie den Job entweder jede Minute ausführen (das kürzeste Intervall wird direkt unterstützt) oder einen einzelnen Job für jedes Ereignis planen. Für weniger grobe Planungspunkte könnten Sie wahrscheinlich die Wildcard/Fixpunktsyntax von Cron verwenden, z. "*/5,10,15, ... * * * *"

+0

Ich verwende ein Mittel, um den Benutzer zu bestätigen, dass er oder sie online ist. Sobald die Bestätigung erfolgt ist, wird ein Zeitstempel in der Datenbank gespeichert. Ein Cron-Job überprüft, ob die Bestätigung rechtzeitig erfolgt ist. – Enthusiast

Verwandte Themen