Überprüfen Sie, ob der Benutzer online ist.

Ich möchte einfach einen grünen Kreis nach dem Benutzernamen zeigen, wenn der Benutzer online ist, und nichts, wenn der Benutzer offline ist.

Ich habe diese 5 Jahre alte Frage gefunden, aber beide Ideen scheinen schlecht zu sein, weil man mir gesagt hat, dass das Einstellen von Transienten oft ziemlich teuer ist und auch das ständige database-Update scheint eine schlechte Idee zu sein.

Gab es Änderungen? Gibt es eine bessere Möglichkeit zu überprüfen, ob der (nicht aktuelle) Benutzer online ist?

Wie kommt es, dass es eine einfache function is_user_logged_in() für den aktuellen Benutzer gibt, aber es gibt immer noch keine Möglichkeit, nach anderen zu is_user_logged_in() ? Gibt es nicht irgendeine Art von Flagge oder etwas?

Solutions Collecting From Web of "Überprüfen Sie, ob der Benutzer online ist."

WordPress verfolgt nicht, ob ein Benutzer online ist. Es kann nur wissen ob der Strom online ist, was immer ja ist (sonst gäbe es keine Anfrage). Wenn Sie wissen möchten, ob ein anderer Benutzer, der nicht der aktuelle Benutzer ist, online ist, existiert diese Information nicht und Sie müssen sie selbst implementieren.

is_user_logged_in überprüft, ob der aktuelle Benutzer aka angemeldet ist. Es ist kein Test, wenn ein Benutzer online ist

Um dies zu tun, müssen Sie auch Kompromisse eingehen, und Echtzeit-Online- oder Nicht-Status-Tracking können Sie nicht nur mit WordPress machen.

Ihre Optionen umfassen:

  • Aktualisieren eines Zeitstempels jedes Mal, wenn Sie auf eine Seite im Benutzermeta zugreifen und diesen Zeitstempel als Test verwenden (auch wenn der Zeitstempel eines Benutzers in den letzten 5 Minuten als online betrachtet wird), müssen Sie einen AJAX-Aufruf an Ihre Site senden, um den Zeitgeber zu aktualisieren. Beachten Sie Folgendes: Wenn der Benutzer den Browser unmittelbar nach dem Laden einer Seite schließt, werden die Anzeigen weiterhin für 5 Minuten online geschaltet. Dadurch entstehen performanceseinbußen, da der Traffic nicht skaliert wird
  • Ein Flag haben, das anzeigt, dass ein Benutzer online ist, und es auf “wahr” setzen, wenn ein Benutzer auf eine Seite klickt. Haben Sie einen Cron-Job, der in regelmäßigen Abständen alle Flags auf false setzt. Dies ist billiger zu Abfrage, aber es ist teurer zu laufen. Sie können es kostengünstiger machen, indem Sie die Zeitverzögerung von Cron-Jobs erhöhen und somit die Genauigkeit verringern. Dies macht angemeldete Benutzer immer noch teurer, da jede Seitenladung einen database-Schreibvorgang beinhaltet. Es wird nicht mit dem Verkehr skalieren.
  • Verwenden Sie einen externen Dienst und richten Sie einen Heroku / Simperium / Node-Server ein, der unabhängig von WordPress ist und den Online-Status verfolgt. Wie Sie dies tun würden, würde den Rahmen dieser Seite sprengen, da Sie sich außerhalb von WordPress in andere Fachbereiche bewegen. Dies ist die komplexeste und teuerste Option, aber es bedeutet, dass Ihre WordPress-Installation nicht beeinträchtigt wird. Es bedeutet, dass die Online-Präsenzdaten in WordPress selbst nicht verfügbar sind. Sie können nur dann abfragen, wenn Sie Mechanismen dafür erstellen, die teuer sind. Der Code, der das Symbol grün macht, muss in JavaScript im Browser sein. Das Worst-Case-Szenario ist jedoch, dass Ihre Presence-Logik fehlschlägt, da Ihr externer Server unter Last schrumpft, aber Ihre WordPress-Site keine DB-Schreibvorgänge mehr bei jedem Seitenladen hat und Ihre Site besser mit Traffic skaliert als die anderen Optionen

Alles in allem ist das, was du verlangst, nicht trivial, und obwohl es einfach klingt, wird es entweder sehr leistungsschwach, ungenau oder erfordert einen zusätzlichen Server und Entwicklungszeit. Es gibt einen Kompromiss.

Außerdem bedeutet jede Lösung, die Sie in PHP ausführen, dass Sie keine vollständigen Seitencaches mehr ausführen können, es sei denn, die Online-Offline-functionalität wird durch JavaScript unterstützt. Andernfalls, wenn Sie jemanden als online zeigen und Ihre Seiten 24 Stunden im Cache gespeichert haben, sind sie für die nächsten 24 Stunden noch online. Wenn Sie eine der beiden ersten Optionen verwenden, können Sie auch keine Caching-function für angemeldete Benutzer verwenden, und Tools wie Batcache oder Varnish werden Ihr System beschädigen, wenn sie auf diese Benutzer angewendet werden, es sei denn, ein nicht zwischengespeichertes AJAX-System wird verwendet um anzuzeigen, dass jemand online ist

Wird sich das in Zukunft ändern? Nein, WordPress behandelt diese Art von functionalität nicht oder speichert diese Art von Daten nicht. WordPress verfolgt Sitzungen in Benutzer-Meta, aber dies ist nicht die Art von Daten, die Sie suchen. Dies kann darauf hinweisen, wie viele Geräte ein Benutzer angemeldet hat, aber es ist keineswegs zuverlässig und kann nicht verwendet werden, um einen Online- oder Offline-Indikator zu geben