1. session 暫存檔案
在伺服器中,如果將所有使用者的session 都儲存到暫存目錄中,會降低伺服器的安全性和效率,打開伺服器儲存的網站會非常慢。在Windows上PHP預設的Session服務端檔案存放在C:\WINDOWS\Temp下,如果說並發存取很大或session建立太多,目錄下就會存在大量類似sess_xxxxxx的session文件,同一個目錄下檔案數過多會導致效能下降,並可能導致受到攻擊最終出現檔案系統錯誤。針對這樣的情況,PHP本身體提供了比較好的解決方法。在php中,使用函數 session_save_path() 可以解決這個問題。
使用php函數session_save_path() 儲存session 暫存文件,可以緩解因臨時文件的儲存而導致伺服器效率降低和網站開啟緩慢的問題,其實例程式碼如下所示:
<?php $path = './tmp/'; //设置 session 存储路径 session_save_path($path); session_start(); $_SESSION['username'] = true; ?>
注意: session_save_path() 函數應在session_start()函數之前呼叫。
2. session 快取
#session 快取是將網頁中的內容暫時儲存到客戶端的Temporary Internet Files 資料夾下,並且可以設定緩存時間。當第一次瀏覽網頁後,頁面的部分內容在規定的時間內就被暫時儲存在客戶端的臨時資料夾中,這樣在下次造訪這個頁面的時候,就可以直接讀取快取中的內容,從而提高網站的瀏覽效率。
Session快取的作用
(1) 減少存取資料庫的頻率。應用程式從快取中讀取持久化物件的速度顯然優於從資料庫中檢索資料的速度。
(2) 當快取中的持久化物件之間存在循環關聯關係時,Session會保證不出現存取物件圖的死循環,以及死循環引發的JVM堆疊溢位。
(3) 保證資料庫中的相關記錄與快取中的記錄同步。 Session在清理快取的時,會自動進行髒資料檢查(dirty-check),如果發現Session快取中的物件與資料庫中對應記錄不一致,則會依最新的物件屬性更新資料庫。
session 快取使用的是 session_cache_limiter()函數,其語法格式如下:
session_cache_limiter(cache_limiter)
參數 cache_limiter 為 public 或 private。 同時session 快取並不是指在伺服器端而是在客戶端緩存,在伺服器中沒有顯示
快取時間的設置,使用的是 session_cache_expire()函數,其語法格式如下:
session_cache_expire(new_cache_expire);
參數cache_expire 是session 快取的時間,單位為分鐘。
注意:這兩個 session 快取函數必須在 session_start()函數之前調用,否則會出錯。
下面透過實例了解 session 快取頁面過程,其實現的程式碼如下所示:
<?php session_cache_limiter('private'); $cache_limit = session_cache_limiter(); //开启客户端缓存 session_cache_expire(30); $cache_expire = session_cache_expire(); //设定客户端缓存时间 session_start(); ?>
以上是php中session暫存檔案和快取說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!