เหตุใดช่วงเวลามาตรฐานจึงมีอายุ 24 นาที (1440 วินาที)


101

ฉันได้ทำการค้นคว้าเกี่ยวกับ PHP Session Handling และพบว่ามีsession.gc_maxlifetimeค่าอยู่ที่ 1440 วินาที ฉันสงสัยว่าทำไมค่ามาตรฐานคือ 1440 และคำนวณอย่างไร? อะไรคือพื้นฐานสำหรับการคำนวณนี้?

ควรเก็บเซสชันไว้นานแค่ไหน? ค่าต่ำสุด / สูงสุดสำหรับ session.gc_maxlifetime ใดที่คุณจะแนะนำ ยิ่งค่าสูงเท่าไหร่ Web-App ก็ยิ่งเสี่ยงต่อการลักลอบเซสชันมากขึ้นเท่านั้น


+1เป็นคำถามที่ดี สิ่งที่เกี่ยวข้อง 60 x 12 x 2 ... รอคำตอบที่น่าสนใจ ... :)
Praveen Kumar Purushothaman

4
นี่คือสายรหัสที่มาที่ค่าเริ่มต้นการตั้งค่า ผู้ที่คุ้นเคยกับ GIT สามารถติดตามประวัติและอาจพบ RFC หรือตั๋วข้อผิดพลาด (ถ้ามี)
ÁlvaroGonzález

1
@Anil: การสนทนานี้ไม่ตอบคำถามของฉัน
Anna Völkl

2
@ ÁlvaroG.Vicarioฉันพบการเปลี่ยนแปลง: github.com/php/php-src/commit/…อย่างไรก็ตามไม่มีเอกสารที่เกี่ยวข้องที่เกี่ยวข้อง 1440เป็นจำนวนนาทีดั้งเดิมสำหรับการหมดเวลาดังนั้นฉันเดาว่าเราจะไม่มีทางรู้เว้นแต่จะมีใครติดตาม Sascha Schumann
Dai

6
ฉันพบที่อยู่อีเมลของ Sascha และติดต่อเขาเกี่ยวกับเรื่องนี้ฉันจะแจ้งให้คนอื่นทราบหากเขาตอบกลับ
ได

คำตอบ:


184

คำตอบที่แท้จริงอาจใกล้เคียงกับสิ่งนี้มาก:

ย้อนกลับไปในช่วง PHP3 วัน PHP เองก็ไม่มีการรองรับเซสชัน

แต่ไลบรารีโอเพนซอร์สชื่อ PHPLIB ซึ่งเขียนโดย Boris Erdmann และ Kristian Koehntopp จาก NetUSE AG ได้จัดเตรียมเซสชันผ่านรหัส PHP3

อายุเซสชันกำหนดเป็นนาทีไม่ใช่วินาที และอายุการใช้งานเริ่มต้นคือ 1440 นาทีหรือหนึ่งวัน นี่คือบรรทัดของรหัสจาก PHPLIB:

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

Sascha Schumann เกี่ยวข้องกับโครงการ PHPLIB ในช่วงปี 1998 ถึง 2000 ไม่ต้องสงสัยเลยว่าเขาคุ้นเคยกับโค้ดเซสชัน PHP3

จากนั้น PHP4 ก็ออกมาในปี 2000 พร้อมกับรองรับเซสชันดั้งเดิม แต่ตอนนี้อายุการใช้งานถูกระบุเป็นวินาที

ฉันจะพนันว่าใครบางคนไม่เคยใส่ใจในการแปลงนาทีเป็นวินาที เป็นไปได้ว่าบุคคลนั้นคือ Sascha Schumann เมื่อค่านั้นถูกเข้ารหัสลงในเครื่องมือ Zend แล้วค่านั้นก็จะกลายเป็น configuration ( php.ini) เริ่มต้นเช่นกัน


3
มันเตะตาคนที่ 24 ได้รับความหมายพิเศษเมื่อเปลี่ยนหน่วย ดังนั้นจากคำตอบของคุณจึงเหมาะสมกับฉันมากที่สุด
Markus Malkusch

1
นั่นดูน่าสนใจ. ขอบคุณสำหรับการแบ่งปัน! :)
SysVoid

3
นี่มันน่าสนใจจริงๆ! ขอบคุณ!
Anna Völkl

การอ้างอิงหนึ่งรายการสำหรับการตั้งค่าเริ่มต้นของ PHP4: github.com/php/php-src/blob/PHP-4.0/ext/session/session.c
CXJ

ตามเอกสารของ PHP กำหนดอายุการใช้งานเป็นวินาที: php.net/manual/en/…
lemhannes

-16

1440 ใช้ในการคำนวณเวลาโดยเปลี่ยนวินาทีให้เป็นชั่วโมง / วัน

  • 1 วัน = 24 ชั่วโมง (ชั่วโมง * 24 = 1 วัน)
  • วัน = 1440 นาที (นาที * 60 * 24 = 1 วัน)
  • วัน = 86400 วินาที (วินาที * 60 * 1440 = 1 วัน)

ตัวอย่าง:

9 วัน [* 60] = 540 [* 1440] = 777600 วินาที

สิ่งเดียวกันนี้เป็นจริงในทางกลับกัน:

777600 วินาที [/ 1440] = 540 [/ 60] = 9 วัน


14
เหตุใดจึงเป็นช่วงอายุเซสชันมาตรฐาน
Félix Gagnon-Grenier

3
เนื่องจากตัวเลขเนิร์ดทางคณิตศาสตร์ที่ใกล้เคียงกับที่งานวิจัยแสดงคือเวลาที่ใหญ่ที่สุดระหว่างสองคำขอในเซสชันเดียวกัน (20-30 นาที)
dimitar veselinov

22
@dimitarveselinov ไหนวิจัย?
Markus Malkusch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.