Tại sao thời lượng của phiên tiêu chuẩn là 24 phút (1440 giây)?


101

Tôi đã thực hiện một số nghiên cứu về Xử lý phiên PHP và nhận thấy session.gc_maxlifetimegiá trị của 1440 giây. Tôi đã tự hỏi tại sao giá trị tiêu chuẩn là 1440 và nó được tính như thế nào? Cơ sở để tính toán này là gì?

Giữ phiên trong bao lâu có ý nghĩa? Bạn sẽ đề xuất giá trị tối thiểu / tối đa nào cho session.gc_maxlifetime? Tôi muốn nói rằng giá trị càng cao, thì Web-App càng dễ bị tấn công bởi Phiên bản.


+1Câu hỏi hay. Một cái gì đó liên quan đến, 60 x 12 x 2 ... Hãy chờ đợi những câu trả lời thú vị ... :)
Praveen Kumar Purushothaman

4
Đây là dòng mã nguồn nơi đặt giá trị mặc định . Những người quen thuộc với GIT có thể theo dõi lịch sử của nó và có thể tìm thấy RFC hoặc vé lỗi (nếu có).
Álvaro González

1
@Anil: Cuộc thảo luận này không trả lời câu hỏi của tôi.
Anna Völkl

2
@ ÁlvaroG.Vicario Tôi đã tìm thấy sự thay đổi: github.com/php/php-src/commit/… tuy nhiên không có tài liệu liên quan nào có liên quan. 1440thực sự là số phút ban đầu cho thời gian chờ, vì vậy tôi đoán chúng ta sẽ không bao giờ biết trừ khi ai đó theo dõi Sascha Schumann.
Đại

6
Tôi đã tìm thấy địa chỉ email của Sascha và liên hệ với anh ấy về điều này, tôi sẽ cho mọi người biết nếu anh ấy phản hồi.
Đại

Câu trả lời:


183

Câu trả lời thực sự có lẽ rất gần với điều này:

Quay lại những ngày PHP3, bản thân PHP không có hỗ trợ phiên.

Nhưng một thư viện mã nguồn mở có tên PHPLIB, ban đầu được viết bởi Boris Erdmann và Kristian Koehntopp từ NetUSE AG, đã cung cấp các phiên thông qua mã PHP3.

Thời gian tồn tại của phiên được xác định bằng phút , không phải giây. Và thời lượng mặc định là 1440 phút, hoặc chính xác là một ngày. Đây là dòng mã từ PHPLIB:

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

Sascha Schumann đã tham gia vào dự án PHPLIB trong khoảng thời gian từ 1998 đến 2000. Không nghi ngờ gì nữa, anh ấy đã quen thuộc với mã phiên PHP3.

Sau đó, PHP4 ra mắt vào năm 2000 với hỗ trợ phiên bản gốc, nhưng giờ đây thời gian tồn tại được chỉ định bằng giây.

Tôi cá là ai đó chẳng bao giờ bận tâm đến việc chuyển đổi phút thành giây. Có thể người đó là Sascha Schumann. Khi giá trị đó được mã hóa vào Zend engine, nó cũng trở thành cấu hình ( php.ini) mặc định.


3
Đối với mắt người ta rằng 24 có một ý nghĩa đặc biệt khi thay đổi đơn vị. Vì vậy, trong số các câu trả lời đã cho của bạn có ý nghĩa nhất đối với tôi.
Markus Malkusch

1
Nó thật thú vị. Cám ơn vì đã chia sẻ! :)
SysVoid

3
Điều này thực sự thú vị! Cảm ơn!
Anna Völkl

Một tham chiếu đến cài đặt mặc định PHP4: github.com/php/php-src/blob/PHP-4.0/ext/session/session.c
CXJ

Theo tài liệu PHP tuổi thọ phiên được thiết lập chỉ trong vài giây: php.net/manual/en/...
lemhannes

-16

1440 được sử dụng trong một phép tính thời gian biến giây thành giờ / ngày.

  • 1 ngày = 24 giờ (giờ * 24 = 1 ngày)
  • ngày = 1440 phút (phút * 60 * 24 = 1 ngày)
  • ngày = 86400 giây (giây * 60 * 1440 = 1 ngày)

Thí dụ:

9 ngày [* 60] = 540 [* 1440] = 777600 giây

Điều này cũng đúng ngược lại:

777600 giây [/ 1440] = 540 [/ 60] = 9 ngày


14
vậy tại sao nó là thời gian tồn tại của phiên tiêu chuẩn?
Félix Gagnon-Grenier,

3
Bởi vì con số mọt sách toán học của nó xấp xỉ bằng những gì nghiên cứu cho thấy là thời gian lớn nhất giữa hai yêu cầu trong cùng một phiên (20-30 phút).
dimitar veselinov

22
@dimitarveselinov Nghiên cứu nào?
Markus Malkusch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.