php - Web 服务器何时清除 PHP session 标识符?

标签 php http session curl

背景:

我正在尝试编写一个脚本,定期连接到 Web 服务器并检查特定页面上的某些信息是否已更改。我已经使用 bash(用于脚本)、curl(用于实际连接)和 crontab(用于调度)的组合来完成这项工作。

由于服务器需要身份验证,我首先使用 curl 使用我的凭据在登录页面上执行 POST 请求并保存 cookie 文件(包含 PHPSESSID)。现在我可以在请求我要检查的实际网页时使用 cookie 文件。

问题:

  1. 服务器何时真正清除我在第一次请求时设置的 PHPSESSID?我想它必须在某个时候执行此操作,否则它会崩溃,因为它会一直存储有关曾经启动的每个 session 的信息。

  2. 如果 PHPSESSID 在关闭浏览器时被清除,有什么方法可以模拟吗?

最佳答案

它比仅仅“清除时”要复杂一点

在 PHP 中,一个 session 有一个生命周期。默认值为 24 分钟。这意味着在您连接到一个网站后,您的 session 有效期至

  • 您关闭浏览器(除非您删除 cookie,否则不会使用 cURL 模拟浏览器)

  • 24 分钟过去

每次您加载页面并且服务器调用 session_start() 时,过期时间将额外增加 24 分钟(从技术上讲,它实际上是在页面上的脚本执行结束时增加 24 分钟其中调用了 session_start()

当该 cookie 实际过期时,您的 session 不再有效,并且 $_SESSION 在服务器端将为空。 但您的数据仍在服务器上,直到服务器下次执行 session 垃圾收集周期以清除过期 session 为止,这取决于服务器上使用的 session 处理程序,可能会也可能不会实际上删除你的数据。例如,银行可能会将数据发送到存档服务器,以备不时之需。

关于php - Web 服务器何时清除 PHP session 标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981524/

相关文章:

php - Smarty - foreach 循环 4 次并创建一个新列表

RESTful GET 和版本控制

php - 阻止后退按钮暴露安全页面?

python - django登录页面中的 session

php - 按索引合并两个数组

php - FullCalendar - 限制范围

php - Laravel 路由在本地服务器上工作,但在 cpanel 上不起作用

Node.js 请求库未设置所有 cookie

python - 如何使用 python 通过 POST 请求将成员/用户添加到 Rancher 项目?

session - Flash 消息需要 session