PHP session_gc 会话函数

  • 定义和用法

    session_gc - 执行会话数据垃圾收集。
  • 版本支持

    PHP4 PHP5 PHP7
    不支持 不支持 v7.1.0+支持
  • 语法

    session_gc ( void )
    
    session_gc() 用于执行会话数据GC(垃圾收集)。 PHP默认情况下会执行基于概率的会话GC。基于概率的GC可以工作,但是问题很少。
    • 1) - 在优先时间内,低流量站点的会话数据可能不会被删除。
    • 2) - 高流量站点的GC可能过于频繁。
    • 3) - GC是根据用户的请求执行的,用户将遇到GC延迟。
    因此,建议对于使用UNIX类系统的生产系统,例如使用“ cron”,定期执行GC。 通过将session.gc_probability设置为0,确保禁用基于概率的GC。
  • 参数

    参数 必需的 描述
  • 返回值

    session_gc() 返回成功删除的会话数据的数量,失败则返回FALSE。 旧的保存处理程序不返回已删除会话数据的数量,而仅返回成功/失败标志。 在这种情况下,无论实际删除的数据如何,删除的会话数据的数量都变为1。
  • 示例

    // Note: session_gc() is recommended to be used by task manager script, but
    // it may be used as follows.
    
    // Used for last GC time check
    $gc_time = '/tmp/php_session_last_gc';
    $gc_period = 1800;
    
    session_start();
    // Execute GC only when GC period elapsed. 
    // i.e. Calling session_gc() every request is waste of resources. 
    if (file_exists($gc_time)) {
        if (filemtime($gc_time) < time() - $gc_period) {
            session_gc();
            touch($gc_time);
        }
    } else {
        touch($gc_time);
    }
    
  • 相关函数

    session_start() - 启动新会话或者重用现有会话
    session_destroy() - 销毁一个会话中的全部数据