Temat: Czas ostatniej aktywnosci / update w bazie przy kazdym...

Co sadzicie o pomysle rejestracji czasu ostatniej aktywnosci uzytkownika na stronie poprzez update pola w bazie obecnym timestampem co kazde wywolanie dowolnej strony?

Generalnie nie pytam o to jak to zrobic bo juz to zrobilem - pytam tylko o ew. kwestie, ktore moga mnie zaskoczyc... W sumie nie obawiam sie problemow wydajnosciowych gdyz dzialam na wlasnym blade'dzie z 64 gb ramu gdzie powiedzmy, ze w "godzinach szczytu" z intranetowej aplikacji korzysta 100 klientow. My.cnf tak przerobilem aby problem "too many connections" itp. nie byl problemem.

O czym jeszcze ew. powinienem pamietac? A moze uzyc innego rozwiazania? Dzieki za sugestie.
Pozdrawiam

edit: srodowisko to standardowy LAMP na Ubuntu Server LTS...Mateusz Komarnicki edytował(a) ten post dnia 13.02.13 o godzinie 16:36
Tomasz Zadora

Tomasz Zadora programuję

Temat: Czas ostatniej aktywnosci / update w bazie przy kazdym...

To moim zdaniem bardziej pytanie bazodanowe niż dotyczące samego PHP.

Dlatego odpowiem tak: skoro działasz na MySQLu to na pewno wydajniej będzie zapisywać ostatnią aktywność w tabeli która działa w pamięci niż jechać po dysku przy każdej odsłonie - bo to jest masakryczne obciążenie I/O przy dużym ruchu.

http://dev.mysql.com/doc/refman/5.5/en/memory-storage-...Tomasz Zadora edytował(a) ten post dnia 13.02.13 o godzinie 17:28

konto usunięte

Temat: Czas ostatniej aktywnosci / update w bazie przy kazdym...

Czas ostatniej aktywnosci / update w bazie przy kazdym requescie.

Jak Ci jest potrzebne, why not.Przemek Czekaj edytował(a) ten post dnia 15.02.13 o godzinie 15:47
Marcin Mackiewicz

Marcin Mackiewicz Programista JAVA, RS
Adware Polska

Temat: Czas ostatniej aktywnosci / update w bazie przy kazdym...

Trochę dziwny sposób na zbieranie informacji o aktywnym user'e. Nie prościej było by zbierać informację o timestamp poprawnego logownia do aplikacji? User aktywny = user logujący się nie dawniej niż ...

W sumie to wszystko zależy od tego do czego potrzebujesz akurat taką informację. Mnie ciężko jest znaleźć powód zapisywania timestamp ostatniego request'a do serwera www
Jacek R.

Jacek R. programista

Temat: Czas ostatniej aktywnosci / update w bazie przy kazdym...

To nie jest dziwny sposób na zbieranie info o userze - całkiem wiele serwisów w sieci implementuje podobne rozwiązania. Często nawet odświeżenie strony to za mało, dlatego AJAXem lub innym WebSocketem wymienia się z klientem informacje, czy user jest dalej aktywny.

Ciągły update w bazie jest oczywiście bez sensu. Takie dane, jak ostatnia aktywność usera, są mocno tymczasowe i szybko się zmieniają. Dlatego warto sięgnąć do rozwiązań, które powstały w takim celu - key-value stores działające w pamięci. Może być to Redis, może być Memcached może być coś zupełnie innego, ale z tej półki.

Zapisywanie takich informacji do zwykłej bazy to zbyt duże obciążanie systemu. I nawet jeśli użytkowników ma być mało, warto podejść do tego od początku dobrze i zrobić ze świadomością, że zrobiło się najlepiej jak można było :)



Wyślij zaproszenie do