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.

Anna Völkl
źródło
+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 ( ).

CXJ
źródło
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

Steve Terjeson
źródło
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