手册可能没有足够强调这一点
** 这与会话的生命周期无关 **
无论您将此设置设置为多少,都不会改变会话在服务器上的生存时间。
这只会更改 HTTP 缓存过期时间(Expires: 和 Cache-Control: max-age 标头),它们会建议浏览器缓存页面在用户缓存中保持多长时间,而无需从服务器重新加载它们。
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
session_cache_expire — 获取和/或设置当前缓存过期时间
session_cache_expire() 返回 session.cache_expire
的当前设置。
缓存过期时间在请求启动时重置为存储在 session.cache_expire 中的默认值 180。因此,您需要为每个请求(在调用 session_start() 之前)调用 session_cache_expire()。
value
如果提供了 value
且不为 null
,则当前缓存过期时间将被 value
替换。
注意: 设置
value
只有在session.cache_limiter
设置为与nocache
不同的值时才有意义。
返回 session.cache_expire
的当前设置。返回的值应以分钟为单位,默认值为 180。如果无法更改值,则返回 false
。
版本 | 描述 |
---|---|
8.0.0 |
value 现在可以为空。 |
示例 #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 分钟后过期";
?>
手册可能没有足够强调这一点
** 这与会话的生命周期无关 **
无论您将此设置设置为多少,都不会改变会话在服务器上的生存时间。
这只会更改 HTTP 缓存过期时间(Expires: 和 Cache-Control: max-age 标头),它们会建议浏览器缓存页面在用户缓存中保持多长时间,而无需从服务器重新加载它们。
使用 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”)是什么意思。