1、設(shè)置多級目錄存儲SESSION
默認session的存儲目錄是1級目錄,如果用戶量比較大,session文件數(shù)量就比較大,我們可以設(shè)置目錄數(shù)為2,使用2級目錄可以提交查找和存取速度。不過這種方式對速度的提升一般不是很明顯,可以通過修改php.ini,進而修改session存儲目錄數(shù)。
session.save_path = "2;/tmp"
2、將SESSION存儲到redis中
php中的session默認是存儲在文件中的,支持redis存儲方式,因為redis的鍵值數(shù)據(jù)時存儲在內(nèi)存中的,可以提高session的存取速度。
session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379"
3、及時釋放SESSION文件鎖
我們在使用session時,需要先執(zhí)行session_start()
函數(shù)。
session_start()函數(shù)的作用如下:
判斷http請求是否包含名為PHPSESSID的cookie,如果沒有則創(chuàng)建該cookie并寫入到http響應(yīng)的頭文件。
通過PHPSESSID查找對應(yīng)的session文件,以讀寫方式打開的文件,然后讀取里面的數(shù)據(jù)到內(nèi)存。
然后我們一般會通過$_SESSION這個超全局變量,讀取或者設(shè)置session的值,我們操作的時候,session的值都是保存在內(nèi)存中的,默認在頁面執(zhí)行完畢之后,才會寫入到對應(yīng)的文件中。
我們通過下面的一段代碼測試這個過程:
SESSION執(zhí)行過程分析:
include "session_function.php"; //session_function.php代碼在附錄 session_start(); $_SESSION['name']="koastal"; echo "<br/>html content<br/>"; var_dump($_SESSION); echo "<br/>";
輸出結(jié)果:
open read html content array (size=1) 'name' => string 'koastal' (length=7) shutdown write close
通過上面的例子可以發(fā)現(xiàn),在頁面執(zhí)行的過程中(頁面的執(zhí)行過程是指將php文件解析為對應(yīng)的html文件的耗時,而不是用戶在該頁面上的停留時間),session文件是被鎖定的。
推薦教程:PHP視頻教程