![]() |
![]() |
![]() ![]()
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: 291 Pomógł: 45 Dołączył: 21.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ja mimo wszystko popieram rozwiązanie Rysh'a.
Zaprzęgania crona do eliminowania martwych dusz - trochę na wyrost. Tak to jak zapiszesz sobie timestamp + ilość sekund naprzód to przy kolejnym odświeżeniu sprawdzisz tylko warunek: *) timestamp aktualny < timestamp ubicia sesji => update *) przeciwnie => ubij sesję i kieruj klienta do logowania Cytat bo w Twoim kodzie traci minimalne zasoby na liczenie czasu - w moim ma twardo podaną liczbę bez liczenia tak tylko, że ty i tak musisz to potem obrobić poprzez phpa w sensie sumowanie dat, konwersja typów. a tak to robisz sprawdzenie jednego warunku i wsio, zresztą liczenie czyli sumowanie dwóch wartości i tak spada na bazę. Twoje rozwiązanie to trochę wyskoczenie z armatą na muchę. Ten post edytował klocu 2.07.2012, 20:09:46 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 21:57 |