Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sesja, czas trwania
Forum PHP.pl > Forum > PHP
PioBia
Witam serdecznie

Prowadzę niewielki sklep internetowy napisany przeze mnie. Kod piszę na lokalnej stacji, gdzie mam zainstalowanego LAMP-a (Debian+LAMP). W php.ini ustawiłem czas sesji na 6 godzin.

Działanie sklepu: pierwsza linijka każdej strony rozpoczyna się session_start() - odwiedzający ma zatem przez cały okres odwiedzin nawiązaną sesję i przydzieloną zmienną sesji. W chwili gdy wrzuca coś do koszyka w tabeli KOSZYK tworzony jest rekord identyfikowany właśnie zmienną sesji.

Na lokalnej maszynie wszystko działa jak należy. Odwiedzający wrzuca produkty do koszyka, wraca do komputera po 3 godzinach i sesja wciąz jest aktywna, a on wciąz ma dostęp do koszyka.

Problem pojawił się, kiedy kod zaczął pracować na serwerze internetowym (wilk.ionic.pl). Na moją prośbę administator wydłużył czas trwania sesji do 3 godzin. Sprawdziłem to prostym skryptem wyświetlającym identyfikator sesji i godzinę. Po 2 godzinach identyfikator sesji pozostakje bez zmian. Ale... zarówno zalogowani użytkownicy, jak i klienci wrzucający produkty do koszyka tracą sesję po około 15 minutach. Dlaczego? Jakiś pomysł? Czy jest to kwestia ustawień php.ini, czy ja źle obsługuję sesję?


pozdrawiam!
adbacz
Prawdopodobnie jest problem na serwerze. Zamiast przechowywać dane sesji przez cały czas ich trwania - serwer usuwa je przed czasem ich wygasnięcia. Możesz sprawdzić działanie sesji (skryptu) na jakimś darmowym serwerze z PHP, na przykład CBA (PL), x10hosting (EN) i w tedy będziesz miał pewność - jeśli będzie tam działać - wina serwera, jeśli nie będzie - wina skryptu. Trzeba potestować...
PioBia
Serwer może się tak zachowywać, pomimo ustawionej zmiennej session.gc_maxlifetime na 10800? Jaki wpis może powodować, ze serwer nie trzyma danych sesji? Podkreślam - prosty skrypt pokazuje, ze po upływie 1-2 godzin zmienna sesji pozostaje bez zmian.
Jeszcze jedna myśl - strona jest testowana na serwerze postawionym na mojej maszynie (Debian+LAMP). Tam wszystko działa bez zarzutu.
adbacz
Ja tu nie mówię o czasie trwania sesji - jak mówisz, ona działa ok, bo ID sesji się nie zmienia. Ale zmienia się za to treść sesji, czyli dane przypisane do danej sesji - one poprostu znikają. Za to chyba nie jest odpowiedzialna żadna z wartości w pliku php.ini wink.gif
TwojPan
ini_set('session.gc_maxlifetime', 10800);
session_set_cookie_params(180);


a potem sprawdz:

echo ini_get("session.gc_maxlifetime");
PioBia
Administratorzy odpuścili poszukiwanie przyczyn, serwis został przeniesiony na inny serwer tej firmy. I problem zniknął. Takie rozwiązanie mi odpowiada - naczelny cel to działanie serwisu, a nie dociekanie DLACZEGO.
Dziękuję wszystkim za pomoc, 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.