![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 4.10.2002 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Mam taki jeden głupi problemik, który w sumie nie mam pojęcia skąd się bierze. Sytuacja wygląda następująco: mam postawionego Apacza i php 4.2.2 w wersji pod Windoze (98se w dodatku), wszystko ladnie smiga, dziala nawet i sie nie zwiesza. Wszystkie skrypciki nawet w polaczeniu z mysql'em działają całkiem spoczko. Ale problem zaczyna być przy sesjach. Poczytałem trochę z sieci, poczytałem manuala, poczytałem jakąś naukową książkę w temacie tym i coś tam napisałem. Wszystko ładnie i pięknie działa, ale problem pojawia się gdy zmieniłem session.gc_probability na 100 (domyślnie jest 1). Z pewnych względów ustawione mam session.auto_start, ale problem opisany poniżej występuje też gdy auto_start jest wyłączone. Chodzi o to, że w momencie gdy wchodzę przeglądarką na stronkę wykonuje następujący kod:
Kod session_register('imie');
session_register('nazwisko'); $imie = "Szymon"; $nazwisko = "Kowalski"; Jako, że autostart jest włączony (nawet i tak by nie musiał, bo session_register niejawnie rozpoczyna sesje), wszystko ładnie zapisuje się do pliku sesji. Potem przechodzę do następnego pliku i tam wykonuje następujący kod: Kod if (session_is_registered('imie')) print("Sesja okej<BR>");
printf("SES ID: ".session_id()."<BR>"); printf("IMIE: ".$_SESSION['imie']."<BR>"); Wszystko ładnie się wyświetla i działa. Ale tylko do momentu gdy wchodzę inną przeglądarką na stronkę. W tym momencie ta druga przeglądarka dostaje identyfikator sesji i tworzony jest plik sesji z innym identyfikatorem, ale przy okazji niszczony jest plik sesji, którą rozpoczęła pierwsza przeglądarka. I w tym momencie ta pierwsza gubi informację, które zawarte miała w pliku sesji, mimo, że nadal w ciachu (czy jak tam się ustawi) posiada identyfikator sesji swój, ale pliku sesji nie może odnaleźć, gdyż go fizycznie na dysku od strony serwera ni ma. W momencie gdy miałem session.gc_probability ustawione na 1, to plik sesji się uchowywał, ale zasadniczo z tego co wyczytałem takie niskie prawdopodobieństwo eliminowania zużytych plików sesji jest niezalecany. Czy ktoś jest w stanie wskazać chociażby gdzie szukać rozwiązania tegoż problemu? Najprawdopodobniej jest to winna w konfiguracji php, bo kod skryptu już bardziej prostacki być nie może chyba. A konfiguracje mam zasadniczo default'ową, prócz tego gc_probability i autostart'u - nic poza tym nie zmieniałem. -------------------- I get knocked down, but I get up again, you I'll never going to keep me down
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 602 Pomógł: 0 Dołączył: -- Skąd: W - WA -> GRO Ostrzeżenie: (0%) ![]() ![]() |
Manual mowi (o php.ini):
Cytat session.gc_probability określa prawdopodobieństwo w procentach rozpoczęcia procedury gc (garbage collection - zbieranie śmieci) przy każdym wywołaniu. Domyślnie 1.
session.gc_maxlifetime określa ilość sekund, po jakich dane będą rozpoznawane jako 'śmieci' i usuwane. -------------------- Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 4.10.2002 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Mam ustawione session.gc_maxlifetime standardowo (bodajze to 1440 sec). Zresztą praktycznie caly php.ini mam ustawione standardowo, oprócz session.auto_start i session.gc_probabilty.
-------------------- I get knocked down, but I get up again, you I'll never going to keep me down
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 19.03.2002 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
dziwi mnie brak kontynuacji tematu :wink:, ponieważ na zestawie windows 2000 + Apache 2.0.39 + php 4.2.2(dev) obserwuję to samo zjawisko...
ustawienie session.gc_probability na "100" powoduje niszczenie wszystkich plików sesji, nieważne czy od ich ostatniej modyfikacji minął czas podany w session.gc_maxlifetime, czy nie. czy może ktoś zaobserwował to samo, a może inne wersje php działają poprawnie? dla mnie najprostszym wyjściem jest ustawienie wartośc session.gc_probability na "0" i samodzielna obsługa przeterminowanych sesji (np. osobny programik uruchamiany z harmonogramu co godzinkę i sprzątający po sesjach), ale to chyba powinno działać poprawnie z poziomu php ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.07.2025 - 19:45 |