手冊可能沒有充分強調這一點
** 這與 session 的生命週期無關 **
無論您如何設定此設定,都不會改變 session 在伺服器上的存活時間。
這只會更改 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
取代。
注意: 只有當
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 分鐘後過期";
?>
手冊可能沒有充分強調這一點
** 這與 session 的生命週期無關 **
無論您如何設定此設定,都不會改變 session 在伺服器上的存活時間。
這只會更改 HTTP 快取過期時間(Expires: 和 Cache-Control: max-age 標頭),它會建議瀏覽器可以將頁面快取在使用者快取中的時間,而無需從伺服器重新載入它們。
使用 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.`)是指什麼情況。