Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Jak to jest z tymi cholernymi sesjami.

21 views
Skip to first unread message

Srututu

unread,
Nov 5, 2009, 2:47:40 AM11/5/09
to
Mam problem z wygasaniem sesji. Czy w tym durnowatym php, nie robiąc
własnego mechanizmu obsługi sesji, można tak ustawić sesję, żeby jej czas
trwania i przechowywania w niej danych był możliwy do ustawienia dla
pojedynczego usera?

Jest sobie 100 userów bazy. Dla 3 mam pilną potrzebę ustalenia, że sesja ma
trwać dłużej niż standardowo. I za cholerę nie moge tego zrobić. Jak nie
urok to sraczka.

do ustawienia są

session.gc_probability
session.gc_divisor
session.gc_maxlifetime
session_set_cookie_params
session_cache_expire
session_set_save_handler

co za łoś to projektował. Wszystkie zmienne mają wpływ na czas
trwania/przechowywania sesji. I jak php chce to apacz nie chce bo garbage
collector się go nie słucha. Albo robię coś nie tak.

Możecie mi podać prosty przykład skryptu w którym sesja będzie wygasać po 5
sek. ?

Lemat

unread,
Nov 5, 2009, 3:10:04 AM11/5/09
to
Srututu wrote:

a masz oddzielne katalogi na pliki sesji userów?

--
Pozdrawiam
Lemat
easyISP jest spam friendly - utrzymuje notorycznego spamera polandexport /
ipeik / netex-sterling, pomóżcie ich przekonać nie wykupując u nich
hostingu.

Srututu

unread,
Nov 5, 2009, 3:41:10 AM11/5/09
to

> a masz oddzielne katalogi na pliki sesji userów?

Nie. Przecież każda sesja to oddzielny plik. Po cholerę robić folder w
którym będzie tylko jeden pliczek?
Jeśli to wymagane to jakiś deblizm.
Jeśli ten debilizm jest prawdą to czy można zmusić php do zakładania takich
folderów?
Jeśli nie da rady tego zrobić z poziomu skryptu to po cholerę w PHP
implementowano obsługę czasu trwania sesji skoro nie można z tego normalnie
korzystać?

Lemat

unread,
Nov 5, 2009, 4:52:06 AM11/5/09
to
Srututu wrote:

co rozumiesz pod pojęciem "user"?
bo ja rozumiem usera na serwerze a nie usera z przeglądarką
każdy user na serwerze powinien mieć oddzielny katalog na sesje/pliki
tymczasowe i jego strony www podczas wizyty wielu userów z przeglądarkami
będą generowały wiele plików sesji w tym katalogu.

Srututu

unread,
Nov 6, 2009, 2:05:25 AM11/6/09
to

> co rozumiesz pod pojęciem "user"?

Użytkownik serwisu www

Lemat

unread,
Nov 6, 2009, 4:23:07 AM11/6/09
to
Srututu wrote:

>
>> co rozumiesz pod pojęciem "user"?
>
> Użytkownik serwisu www

A skąd PHP ma wiedzieć, że dany plik sesji ma być trzymany dłużej?
Tak się nie da. W takim przypadku PHP po stronie serwera ustawia się na
najdłuższą możliwą wartość a w obsłudze sesji po stronie skryptów PHP
sprawdza się czas sesji i odcina userów z przekroczonym czasem.

Srututu

unread,
Nov 6, 2009, 5:59:07 AM11/6/09
to

> A skąd PHP ma wiedzieć, że dany plik sesji ma być trzymany dłużej?
> Tak się nie da. W takim przypadku PHP po stronie serwera ustawia się na
> najdłuższą możliwą wartość a w obsłudze sesji po stronie skryptów PHP
> sprawdza się czas sesji i odcina userów z przekroczonym czasem.

I cudownie. To teraz pokaż mi skrypt który wygasi sesję po 5sek.
Oczywiście za pomocą mechanizmów wbudowanych w php a nie twojej funkcji
która mierzy czas od startu sesji który przechowywany jest w sesji i w
zależności od wyniku ją niszczy.
Możliwe czy jednak ktoś coś spieprzył?
Oczywiście zakładam że to wina mojego ograniczenia umysłowego.

Lemat

unread,
Nov 6, 2009, 6:20:42 AM11/6/09
to
Srututu wrote:

powtarzam pytanie:
skąd PHP ma wiedzieć, że jedna sesja ma wygasnąć po 5s a druga po 20
minutach? Czy PHP ma wbudowaną jakąś szklaną kulę?
Wszelakie niestandardowe zachowania trzeba sobie obsłużyć samemu.

Srututu

unread,
Nov 6, 2009, 6:37:42 AM11/6/09
to
> powtarzam pytanie:
> skąd PHP ma wiedzieć, że jedna sesja ma wygasnąć po 5s a druga po 20
> minutach? Czy PHP ma wbudowaną jakąś szklaną kulę?
> Wszelakie niestandardowe zachowania trzeba sobie obsłużyć samemu.

Jakie niestandardowe? Przecież w php są wbudowane funkcje które zarządzają
sesjami i czasem ich trwania.
Tyle że nie mogę ich zmusić do współpracy.

Odpalam skrypt ludek się loguje. Jego user_id i ip kompa ląduje do sesji.
Dzięki temu że te dane się tam znajdują stwierdzam, że ludek jest
zalogowany.

Po domyślnych 24min nieaktywności sesja wygaśnie i zmienna user_id i user_ip
przestaje być dostępna. Ludek automatycznie zostaje wylogowany a przy
odświeżeniu strony sesja i jej identyfikator zostają zniszczone.

Czy mając do dyspozycji i ustawiając gdzieś w skrypcie poniższe
zmienne/funkcje można ten czas zmienić czy nie?

session.gc_maxlifetime
session_set_cookie_params
session_cache_expire

Lemat

unread,
Nov 6, 2009, 7:04:06 AM11/6/09
to
Srututu wrote:

Ale w jaki sposób PHP ma stwierdzić, że jedna sesja ma trwać 24 minuty a
druga 30 minut?
Na jakiej podstawie?

Exe Very Cute

unread,
Nov 6, 2009, 7:53:31 AM11/6/09
to
Srututu pisze:

> Po domyślnych 24min nieaktywności sesja wygaśnie i zmienna user_id i
> user_ip przestaje być dostępna. Ludek automatycznie zostaje wylogowany a
> przy odświeżeniu strony sesja i jej identyfikator zostają zniszczone.
>
> Czy mając do dyspozycji i ustawiając gdzieś w skrypcie poniższe
> zmienne/funkcje można ten czas zmienić czy nie?
>
> session.gc_maxlifetime
> session_set_cookie_params
> session_cache_expire

ini_set('session.cookie_lifetime', 0);
ini_set('session.gc_maxlifetime', 1440);
ini_set('session.gc_divisor', 1);
ini_set('session.gc_probability', 1)

Spróbuj...

Pozdr
Exe Very Cute

Srututu

unread,
Nov 6, 2009, 10:00:00 AM11/6/09
to

> Ale w jaki sposób PHP ma stwierdzić, że jedna sesja ma trwać 24 minuty a
> druga 30 minut?
> Na jakiej podstawie?

Na podstawie danych usera z bazy.
Jeśli ludek się zaloguje to sesja ma być zainicjowana i ustawiana jest na
czas przypisany ludkowi w aplikacji www.
Tak samo jak można ustawić cookie na dowolny czas tak chciałbym zrobić z
sesją.

Srututu

unread,
Nov 6, 2009, 10:00:23 AM11/6/09
to

> ini_set('session.cookie_lifetime', 0);
> ini_set('session.gc_maxlifetime', 1440);
> ini_set('session.gc_divisor', 1);
> ini_set('session.gc_probability', 1)
>
> Spróbuj...

Spróbuję, dzięki.

0 new messages