Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> sesja, czas trwania
PioBia
post 11.06.2014, 19:50:35
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!
Go to the top of the page
+Quote Post
adbacz
post 12.06.2014, 21:12:43
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ć...
Go to the top of the page
+Quote Post
PioBia
post 12.06.2014, 22:16:29
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.
Go to the top of the page
+Quote Post
adbacz
post 13.06.2014, 18:04:48
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 wink.gif
Go to the top of the page
+Quote Post
TwojPan
post 13.06.2014, 18:43:24
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
Go to the top of the page
+Quote Post
PioBia
post 16.06.2014, 22:35:27
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!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2025 - 05:50