![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 11.06.2014 Ostrzeżenie: (0%) ![]() ![]() |
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! |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
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ć...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 11.06.2014 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
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
![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 13.08.2013 Ostrzeżenie: (0%) ![]() ![]() |
ini_set('session.gc_maxlifetime', 10800);
session_set_cookie_params(180); a potem sprawdz: echo ini_get("session.gc_maxlifetime"); Ten post edytował TwojPan 13.06.2014, 18:46:04 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 11.06.2014 Ostrzeżenie: (0%) ![]() ![]() |
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! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.04.2025 - 05:50 |