php中session臨時文件和緩存說明


1. session 臨時文件

 

在服務器中,大理石平台價格表如果將所有用戶的 session 都保存到臨時目錄中,會降低服務器的安全性和效率,打開服務器存儲的站點會非常慢。在Windows上PHP默認的Session服務端文件存放在C:\WINDOWS\Temp下,如果說並發訪問很大或者 session建立太多,目錄下就會存在大量類似sess_xxxxxx的session文件,同一個目錄下文件數過多會導致性能下降,並且可能導致受到 攻擊最終出現文件系統錯誤。針對這樣的情況,PHP本身體提供了比較好的解決辦法。在php中,使用函數 session_save_path() 可以解決這個問題。

使用php函數 session_save_path() 存儲 session 臨時文件,可以緩解因臨時文件的存儲導致服務器效率降低和站點打開緩慢的問題,其實例代碼如下所示:

1

2

3

4

5

6

<?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()函數,其語法格式如下:

1

session_cache_limiter(cache_limiter)

參數 cache_limiter 為 public 或者 private。 同時 session 緩存 並不是指在服務器端而是在客戶端緩存,在服務器中沒有顯示

緩存時間的設置,使用的是 session_cache_expire()函數,其語法格式如下:

1

session_cache_expire(new_cache_expire);

參數cache_expire 是 session 緩存的時間,單位為分鍾。

注意:這兩個 session 緩存函數必須在 session_start()函數之前調用,否則會出錯。https://www.furuihua.cn/product/393.html

下面通過實例了解 session 緩存頁面過程,其實現的代碼如下所示:

1

2

3

4

5

6

7

<?php

 session_cache_limiter('private');

 $cache_limit = session_cache_limiter();    //開啟客戶端緩存

 session_cache_expire(30);

 $cache_expire = session_cache_expire();    //設定客戶端緩存時間

 session_start();

?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM