2024年PHP大会日本站

session_cache_expire

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

session_cache_expire获取和/或设置当前缓存过期时间

描述

session_cache_expire(?int $value = null): int|false

session_cache_expire() 返回 session.cache_expire 的当前设置。

缓存过期时间在请求启动时重置为 session.cache_expire 中存储的默认值 180。因此,您需要针对每个请求调用 session_cache_expire()(并且在调用 session_start() 之前)。

参数

value

如果提供了 value 且不为 null,则当前缓存过期时间将被 value 替换。

注意: 设置 value 只有在 session.cache_limiter 设置为不同于 nocache 的值时才有效。

返回值

返回 session.cache_expire 的当前设置。返回的值应以分钟为单位读取,默认为 180。如果无法更改该值,则返回 false

变更日志

版本 描述
8.0.0 value 现在可以为 null。

示例

示例 #1 session_cache_expire() 示例

<?php

/* 将缓存限制器设置为 'private' */

session_cache_limiter('private');
$cache_limiter = session_cache_limiter();

/* 将缓存过期时间设置为 30 分钟 */
session_cache_expire(30);
$cache_expire = session_cache_expire();

/* 启动会话 */

session_start();

echo
"缓存限制器现在设置为 $cache_limiter<br />";
echo
"缓存的会话页面将在 $cache_expire 分钟后过期";
?>

参见

添加备注

用户贡献的备注 2 条备注

匿名
16年前
手册可能没有足够强调这一点

** 这与会话的生命周期无关 **

无论您将此设置设置为多少,它都不会更改会话在服务器上的生存时间。

这只会更改HTTP缓存过期时间(Expires: 和 Cache-Control: max-age 头部),这些头部建议浏览器可以将页面缓存多久在用户的缓存中,而无需从服务器重新加载它们。
tuncdan dot ozdemir dot peng at gmail dot com
9个月前
使用PHP 8.2

session_start();

$result1 = session_cache_expire( 30 ); // 设置器,导致警告:在...中会话活动时无法更改会话缓存过期时间

$result2 = session_cache_expire(); // 获取器

var_dump( $result1, $result2 ); // 输出:int(180) int(180) [注意:180 是默认值]

因为会话已经启动,所以无法更改缓存过期时间(警告消息)。但是,返回值不是false,仍然是原始的、未更改的值!

因此,我不知道根据文档(“如果无法更改值,则返回 false”)什么被认为是更改值的失败。
To Top