Dlaczego standardowy czas trwania sesji wynosi 24 minuty (1440 sekund)?


101

Zrobiłem trochę badań na temat obsługi sesji PHP i znalazłem session.gc_maxlifetimewartość 1440 sekund. Zastanawiałem się, dlaczego standardowa wartość to 1440 i jak jest obliczana? Jaka jest podstawa tego obliczenia?

Jak długo warto utrzymywać sesje? Jakie wartości min / max dla session.gc_maxlifetime byś polecił? Powiedziałbym, że im wyższa wartość, tym bardziej narażona jest aplikacja internetowa na przechwytywanie sesji.


+1Fajne pytanie. Coś związanego z, 60 x 12 x 2 ... Poczekajmy na ciekawe odpowiedzi ... :)
Praveen Kumar Purushothaman

4
Oto wiersz kodu źródłowego, w którym ustawiono wartość domyślną . Osoby zaznajomione z GIT mogą być w stanie śledzić jego historię i być może znaleźć RFC lub zgłoszenie błędu (jeśli istnieje).
Álvaro González

1
@Anil: Ta dyskusja nie odpowiada na moje pytanie.
Anna Völkl,

2
@ ÁlvaroG.Vicario Znalazłem zmianę: github.com/php/php-src/commit/ ... jednak nie ma żadnej odpowiedniej powiązanej dokumentacji. 1440rzeczywiście była pierwotna liczba minut przerwy, więc myślę, że nigdy się nie dowiemy, chyba że ktoś namierzy Saschę Schumanna.
Dai,

6
Znalazłem adres e-mail Saschy i skontaktowałem się z nim w tej sprawie, dam znać, jeśli odpowie.
Dai,

Odpowiedzi:


184

Prawdziwa odpowiedź jest prawdopodobnie bardzo bliska:

W czasach PHP3 samo PHP nie miało obsługi sesji.

Ale biblioteka open source o nazwie PHPLIB, początkowo napisana przez Borisa Erdmanna i Kristiana Koehntoppa z NetUSE AG, zapewniała sesje za pośrednictwem kodu PHP3.

Czas życia sesji został zdefiniowany w minutach , a nie sekundach. Domyślny czas życia wynosił 1440 minut, czyli dokładnie jeden dzień. Oto ta linia kodu z PHPLIB:

var $gc_time  = 1440;       ## Purge all session data older than 1440 minutes.

Sascha Schumann był zaangażowany w projekt PHPLIB w okresie od 1998 do 2000. Bez wątpienia znał kod sesji PHP3.

Następnie w 2000 roku pojawił się PHP4 z natywną obsługą sesji, ale teraz czas życia został określony w sekundach.

Założę się, że ktoś nigdy nie przejmował się zamianą minut na sekundy. Prawdopodobnie tą osobą był Sascha Schumann. Gdy ta wartość została zakodowana w silniku Zend, stała się również php.inidomyślną wartością configuration ( ).


3
Uderza w oczy, że 24 nabiera specjalnego znaczenia przy zmianie jednostki. A więc z udzielonych odpowiedzi najbardziej sensowna jest dla mnie twoja.
Markus Malkusch

1
To interesujące. Dzięki za udostępnienie! :)
SysVoid

3
To jest naprawdę interesujące! Dzięki!
Anna Völkl

Jedno odniesienie do domyślnych ustawień PHP4: github.com/php/php-src/blob/PHP-4.0/ext/session/session.c
CXJ

Zgodnie z dokumentacją PHP czas trwania sesji jest ustawiony w sekundach: php.net/manual/en/…
lemhannes

-16

1440 jest używany do obliczania czasu zamieniającego sekundy na godziny / dni.

  • 1 dzień = 24 godziny (godziny * 24 = 1 dzień)
  • dzień = 1440 minut (minuty * 60 * 24 = 1 dzień)
  • dzień = 86400 sekund (sekundy * 60 * 1440 = 1 dzień)

Przykład:

9 dni [* 60] = 540 [* 1440] = 777600 sekund

To samo jest prawdą w odwrotnej kolejności:

777600 sekund [/ 1440] = 540 [/ 60] = 9 dni


14
więc dlaczego jest to standardowa długość sesji?
Félix Gagnon-Grenier

3
Ponieważ jest to matematyczna liczba, która jest w przybliżeniu taka sama, jak pokazują badania, to najdłuższy czas między dwoma żądaniami w tej samej sesji (20-30 minut).
Dimitar Veselinov

22
@dimitarveselinov Jakie badania?
Markus Malkusch
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.