Kod
session_register('imie');
session_register('nazwisko');
$imie = "Szymon";
$nazwisko = "Kowalski";
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>");
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.