为什么标准会话寿命为24分钟(1440秒)


Why is the standard session lifetime 24 minutes (1440 seconds)?

我一直在研究PHP会话处理,发现session.gc_maxlifetime值为1440秒。我一直在想为什么标准值是1440,它是如何计算的?这个计算的依据是什么?

保持会话多长时间有意义?您建议session.gc_maxlifetime的最小/最大值是多少?我认为,该值越高,Web应用程序就越容易受到会话劫持。

真正的答案可能非常接近:

在PHP3时代,PHP本身没有会话支持。

但一个名为PHPLIB的开源库,最初由NetUSE AG的Boris Erdmann和Kristian Koehntopp编写,通过PHP3代码提供会话。

会话生存期定义为分钟,而不是秒。默认的生存时间是1440分钟,也就是一天。这是PHPLIB的代码行:

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

Sascha Schumann在1998年至2000年期间参与了PHPLIB项目。毫无疑问,他熟悉PHP3会话代码。

然后PHP4在2000年推出,提供了本机会话支持,但现在使用寿命是以秒为单位的。

我敢打赌,有人从来没有把分钟转换成秒。那个人很可能就是萨莎·舒曼。一旦该值被编码到Zend引擎中,它也成为配置(php.ini)的默认值。

1440用于将秒转换为小时/天的时间计算。

  • 1天=24小时(小时*24=1天)
  • 1天=1440分钟(分钟*60*24=1天)
  • 1天=86400秒(秒*60*1440=1天)

示例:

9天[*60]=540[*1440]=777600秒

反过来也是如此:

777600秒[/1440]=540[/60]=9天