Autor Zpráva
pema01
Profil
Ahoj,

chci se zeptat jak principiálně bych měl zaznamenávat status ONLINE uživatelů? Dávat to do samostatné tabulky v DB je asi nesmysl, neboť může přijít dvakrát odjinud (z jiného prohlížeče) a mohlo by to zlobit. Jak tedy na to?
Tomáš123
Profil
pema01:
chci se zeptat jak principiálně bych měl zaznamenávat status ONLINE uživatelů
Často sa to rieši uložením informácie do poľa $_SESSION, ktoré sa automaticky vymaže po zavretí okna prehliadača. Samozrejme sa prvok sa dá z poľa $_SESSION vymazať aj manuálne (viď péhapko.cz).
Druhým úložiskom býva cache prehliadača. Vtedy informácia prežije aj zavretie okna, užívateľ ju však môže nechtiac vymazať.

Dávat to do samostatné tabulky v DB je asi nesmysl, neboť může přijít dvakrát odjinud (z jiného prohlížeče) a mohlo by to zlobit.
Neukladal by som to do databázy (šlo by zaznamenať IP adresu) aj preto, že užívateľ väčšinou nepočíta s paralelnou aktivitou (využívam to napríklad pri súčasnom prihlasovaní na e-mail).
pema01
Profil
ok podívám se na to, kdyžtak se zase zeptám...
Keeehi
Profil
pema01:
Pokud chceš mít na stránce něco ve stylu "Nyní jsou online tito uživatelé: Franta, Pepa, Marek" tak to co psal Tomáš123 je úplně k ničemu.

Takže ano, při každé uživatelově akci uložit jeho identifikátor a čas do DB. Kdo udělal nějakou akci za posledních 5 minut zjistíš pak takto:
SELECT DISTINCT `user_id` FROM `table` WHERE `timestamp` > NOW() - INTERVAL 5 MINUTE ;

Pokud bys vyžadoval mít informace opravdu aktuální tak řešení je o několik řádů složitější. Tato varianta je však ve většině případů více než dostatečná.
Joker
Profil
pema01:
jak principiálně bych měl zaznamenávat status ONLINE uživatelů?
Obvykle se to dělá tak, že se do databáze poznamená čas poslední aktivity a online jsou ti, kdo byli aktivní v nějakém časovém limitu.
pema01
Profil
jo to zní docela dobře, zkusím

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: