Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Garbage Collector i sesje
Forum PHP.pl > Forum > PHP
Pucy
Wie ktos jak ten mechanizm dziala dokladnie?

  1. <?php
  2. ini_set('session.gc_probability',1);
  3.  ini_set('session.gc_divisor',1);
  4. ?>


u mnie na webservie nie wnosi to zadnej roznicy do dzialania skruptu, gdzie sesje ustawiam raz... a pozneij wykonuje 10 kolejnych krokow korzystajac z ustawionej zmiennej. Dlaczego tak sie dzieje? Czy wniesione prawdopodobienstwo nie powinno usunac tych danych? z 1 akcji?

A ogolnie chodzi o to, ze pojawil sie pewnien losowy blad, raz na kilkadziesiat wywlan skryptu w polowie tych 10 krokow, sesja znika, za czym przemawialby mechanizm gc.

Czy moglby mi ktos rozjasnic dzialanie smieciarza? I przyblizyc mi odpowiedz na pytanie: "dlaczego on nie usunal danych jak dalem mu 100% prawdopodobienstwo?"
heaven
ten mechanizm uruchamiac sie powinien zawsze (przy twoim ustawieniu) ale usuwa tylko przeterminowane dane, czyli sesje ktore juz wygasly bo uplynal limit czasu (session.gc_maxlifetime).
Pucy
A jaka sesja ulega przedawnieniu?

Jezeli dam np. $_SESSION['x'] = 1; i czytam z niej przez kolejnych 55 akcji nie zmieniajac jej, po czasie session.gc_maxlifetime taka dana jest przedawniana? Dobrze rozumiem?
heaven
przedawnieniu moze ulec tylko cala sesja jesli nie byla uzywana przez session.gc_maxlifetime. Czyli jesli w sesji zapisujesz $_SESSION['x'] i $_SESSION['y']. Nastepnie korzystasz tylko z $_SESSION['x'] tak ze odstepy nie przekraczaja session.gc_maxlifetime to $_SESSION['y'] tez nie wygasnie. albo wygasa cala sesja albo zaden jej skladnik



ponoc session.gc_maxlifetime = 1440s = 24m



jest jeszcze session.lifetime - czas waznosci cookies wyslanego do przegladarki ktory trzyma numer danej sesji. defaultowo ustawiony na 0 co oznacza ze "do zamkniecia przegladarki"


utrata sesji wystepuje jeszcze przypadku gdy ktos w przegladarce wpisze strone www.strona.pl i pracujac na niej kod spowoduje przekierowanie na strone strona.pl. wtedy cookies widzi to jako inna strone i nie wysle numeru sessji a co za tym idzie utworzy sie nowa
Pucy
Ahm, czyli czytanie jakeijkowleik danej w sesji, nie pozwoli na jej usuniecie... no to kurde;/

Hm a przy okazji spytam, czy mozna zatrzymac dana sesje po wylaczeniu i wlaczeniu strony? Tzn , pewne tak ale jakim mechanizmem? Chodzi mi o cos takiego jak na php.net jest jak sie wpisuje funkcje do wyszukiwania.
heaven
No wydaje mi sie że jesli chcesz zachowac całą sesje mo musisz odpowiednio ustawic session.lifetime ale ja nigdy tego nie robilem - zachowaja sie wszystkie zminne danej sessji. jesli chcesz przechowac tylko jedna zmienna to chyba lepiej na cookies'ach to zrobic.
Pucy
Hm a czy mozliwe jest by losowo pojawiajace sie bledy (nawet nie odnoszace sie do sesji) byly w jakis sposob wina serwera? Co prawda blad pojawia sie gdy uzywam sesji, ale jak widac, ustawienia i sam mechanizm nie spowoduje jej utraty... A jednak raz na nie wiem eh.. moze 30 operacji skrypt dziala blednie... dlaczego tak sie moze dziac? Takie cos strasznie mi utrudnia prace, jako ze nie moge dokladnie zdiagnozowac problemu, bo nie wiem keidy on sie wydarzy.. ;/
heaven
Trudno mi cos sensownego wykombinować :/. Ciekaw jestem gdzie przechowujesz pliki sesji? moze w katalogu tmp systemowym (tak chyba jest defaultowo)(pliki maja prawdopodobnie taka nazwę "sess_e56744ea542b1190a746904ab47cf8d2" czyli sess_(plus identyfikator sesji))? Moze system co jakis czas wywala te pliki (chcociaz jak dla mnie powinien usunac dopiero po reboot'cie). Za duzo "może". Mysle zebys przerobil sobie sesje aby byly zapisywane w bazie. Wysłałem Ci ksiazkę w której jest opisane krok po kroku jak to zrobic. W kodzie nie bedziesz musial nic zmieniac. Dopiszesz tylko pare linijek i utworzysz dodatkowa tabele w bazie. Jeśli na cos jeszcze wpadne do dam znac na PW. pozdrawiam...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.