![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 4 Dołączył: 22.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Posiadam na praktycznie wszystkich podstronach sporego portalu, który tworzę od pół roku taki oto skrypt:
Powyższy skrypt zapisuje na jakiej podstronie znajduje się user oraz ustawia kolumnę z czasem sesji na 5 minut. Mam też plik, który wykonuje cron co 5min w takiej postaci: Ma on za zadanie wyeliminowanie nie aktywnych użytkowników, którzy byli zalogowani. Odnośnie skryptu crona nie mam zastrzeżeń. Natomiast skrypt, który ustawia 5min "życia" sesji przy zaledwie 3rekordach w bazie o unikalnym ID każdy, wydłuża czas generowania strony aż, o 0.04000 sekundy! na pierwszy rzut oka to malutko, ale przewidywuje w tabeli `online` trzymać około 10k rekordów, więc czas ten mocno się wydłuży... Mam założone indexy na kolumny, ale problem chyba leży w logice mojego skryptu wywalającego sesje, aby nadać danemu userowi status "offline", gdy ten nie korzysta z portalu przez 5min. Jeśli ktoś ma inną idee, szybszą to będę wdzięczny za wskazówki... Ten post edytował fr33d0m 2.07.2012, 18:24:51 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 4 Dołączył: 22.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Hmm... Zdecydowanie bardziej ufam ustawieniu czasu poprzez SQL.
Pomysł z if( SESJA[last_seen] != AKTUALNA_PODSTRONA ) jest dobry i przez chwile sam go używałem, ale co w przypadku gdy sesja dobiega końca za 5min, a użytkownik będzie na tej samej podstronie aktywny przez czas dłuższy? wyloguje go, a przy kolejnym takim wypadku zdenerwuje - tego chyba każdy z nas wolałby uniknąć. Zgadzam się, że stosowanie INT'a do identyfikacji stron jest zdecydowanie lepszy w porównaniu do STRINGA. O ile zapis INT/STRING jest drugo-planowy, to odczyt wszystkich zalogowanych poprzez INT'a na danej podstronie, będzie znacznie szybszy. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 04:04 |