PHP Conference Japan 2024

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_start() 之前)呼叫 session_cache_expire()

參數

value

如果給定了 value 且其值不為 null,則目前的快取過期時間將會被 value 取代。

注意 只有當 session.cache_limiter 設定為與 nocache 不同的值時,設定 value 才會有作用。

回傳值

回傳 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 */

session_start();

echo
"快取限制器現在設定為 $cache_limiter<br />";
echo
"快取的 session 頁面將在 $cache_expire 分鐘後過期";
?>

參見

新增筆記

使用者貢獻的筆記 2 則筆記

匿名
16 年前
手冊可能沒有充分強調這一點

** 這與 session 的生命週期無關 **

無論您如何設定此設定,都不會改變 session 在伺服器上的存活時間。

這只會更改 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 ); // 設定值,會產生警告:在...中,當 session 啟用時,無法更改 session 快取過期時間

$result2 = session_cache_expire(); // 取得值

var_dump( $result1, $result2 ); // 輸出:int(180) int(180) [註:180 是預設值]

因為 session 已經啟動,所以無法更改快取過期時間(會出現警告訊息)。然而,回傳值並非 false,它仍然是原始的、未更改的值!

所以我不清楚文件所述的「更改值失敗時,會回傳 false」(`On failure to change the value, false is returned.`)是指什麼情況。
To Top