(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
session_cache_expire — Получает и (или) устанавливает срок действия текущего кеша
Функция session_cache_expire() возвращает текущее значение директивы
session.cache_expire.
Срок действия кеша сбрасывается до значения по умолчанию — 180, которое во время запуска запроса хранит директива session.cache_expire. Поэтому функцию session_cache_expire() требуется вызывать для каждого запроса, и до вызова функции session_start() .
value
Текущий срок действия кеша заменяется значением value,
если в параметр value передали значение, которое не равно null .
Замечание: Установка параметра
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 минут";
?>
The manual probably doesn't stress this enough:
** This has nothing to do with lifetime of a session **
Whatever you set this setting to, it won't change how long sessions live on your server.
This only changes HTTP cache expiration time (Expires: and Cache-Control: max-age headers), which advise browser for how long it can keep pages cached in user's cache without having to reload them from the server.Using PHP 8.2
session_start();
$result1 = session_cache_expire( 30 ); // setter, results in Warning: Session cache expiration cannot be changed when a session is active in ...
$result2 = session_cache_expire(); // getter
var_dump( $result1, $result2 ); // prints out: int(180) int(180) [note: 180 is the default value]
Because the session was already started, cache expiration could not be changed (warning message). However, the return value is NOT false, it is still the original, unchanged value!
So I do not know what is considered a failure to change the value as per the documentation (`On failure to change the value, false is returned.`).