session_gc

(PHP 7 >= 7.1.0, PHP 8)

session_gc执行会话数据垃圾回收

描述

session_gc(): int|false

session_gc() 用于执行会话数据 GC(垃圾回收)。默认情况下,PHP 使用基于概率的会话 GC。

基于概率的 GC 有一定的效果,但也存在一些问题。1) 低流量网站的会话数据可能无法在首选时间范围内被删除。2) 高流量网站的 GC 可能会过于频繁。3) GC 是在用户请求时执行的,用户会遇到 GC 延迟。

因此,建议使用诸如 UNIX 类系统上的 "cron" 等工具,定期执行 GC 以用于生产系统。确保通过将 session.gc_probability 设置为 0 来禁用基于概率的 GC。

参数

此函数没有参数。

返回值

session_gc() 返回成功删除的会话数据的数量,false 表示失败。

旧的保存处理程序不返回删除的会话数据数量,只返回成功/失败标志。如果是这种情况,则无论实际删除了多少数据,删除的会话数据数量都将变为 1。

示例

示例 #1 session_gc() 适用于 cron 等任务管理器的示例

<?php
// 注意:此脚本应由 Web 服务器进程的相同用户执行。

// 需要活动会话才能初始化会话数据存储访问。
session_start();

// 立即执行 GC
session_gc();

// 清理 session_gc() 创建的会话 ID
session_destroy();
?>

示例 #2 session_gc() 适用于用户可访问脚本的示例

<?php
// 注意:建议 session_gc() 由任务管理器脚本使用,但
// 可以按如下方式使用。

// 用于最后一次 GC 时间检查
$gc_time = '/tmp/php_session_last_gc';
$gc_period = 1800;

session_start();
// 仅在 GC 周期过去时才执行 GC。
// 也就是说,每次请求都调用 session_gc() 是浪费资源的。
if (file_exists($gc_time)) {
if (
filemtime($gc_time) < time() - $gc_period) {
session_gc();
touch($gc_time);
}
} else {
touch($gc_time);
}
?>

参见

添加注释

用户贡献注释

此页面没有用户贡献的注释。
To Top