PHP中的session_start是否防止会话过期?


Does session_start in PHP prevent session expiration?

我对在PHP中使用session_start有些困惑。我应该在我的脚本中使用它,当用户最初创建会话和在后续查询中恢复会话时-或者仅在创建时?

当前,当会话已经存在时,我不调用它,但我发现会话有时会意外地快速过期:

例如,从我的网站的公共日志中,我看到:

srinivasvarma678 09:14:34 27-Jun-14
    I've just logged in...
...
srinivasvarma678 08:59:38 27-Jun-14
    I'm proud to tell I've just solved Vowel Count!

。用户与站点的最后一次交互是在8:59,然后在15分钟内他需要再次登录(尽管session.gc_maxlifetime=1440)

这种行为可以解释的事实,我没有调用session_start每次?

简短回答:是

如PHP文档中所述:

session_start() creates a session or resumes the current one based on a 
session identifier passed via a GET or POST request, or passed via a cookie.

所以如果你想要continue会话,你应该总是使用session_start()在每个页面…

session_start()允许您在脚本中使用会话。

在创建新会话或重用现有会话时都应该使用它。

它还更新会话,使其不会被垃圾收集和删除