phpsession存儲方式
A. php提高SESSION響應速度的方法有哪些
1、設置多級目錄存儲SESSION
默認session的存儲目錄是1級目錄,如果用戶量比較大,session文件數量就比較大,我們可以設置目錄數為2,使用2級目錄可以提交查找和存取速度。不過這種方式對速度的提升一般不是很明顯,可以通過修改php.ini,進而修改session存儲目錄數。
session.save_path = "2;/tmp"2、將SESSION存儲到redis中
php中的session默認是存儲在文件中的,支持redis存儲方式,因為redis的鍵值數據時存儲在內存中的,可以提高session的存取速度。
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"3、及時釋放SESSION文件鎖
我們在使用session時,需要先執行session_start()函數。
session_start()函數的作用如下:
判斷http請求是否包含名為PHPSESSID的cookie,如果沒有則創建該cookie並寫入到http響應的頭文件。
通過PHPSESSID查找對應的session文件,以讀寫方式打開的文件,然後讀取裡面的數據到內存。
然後我們一般會通過$_SESSION這個超全局變數,讀取或者設置session的值,我們操作的時候,session的值都是保存在內存中的,默認在頁面執行完畢之後,才會寫入到對應的文件中。
我們通過下面的一段代碼測試這個過程:
SESSION執行過程分析:
include "session_function.php";
//session_function.php代碼在附錄
session_start();
$_SESSION['name']="koastal";
echo "<br/>html content<br/>";
var_mp($_SESSION);
echo "<br/>";輸出結果:
open
read
html content
array (size=1)
'name' => string 'koastal' (length=7)
shutdown
write
close通過上面的例子可以發現,在頁面執行的過程中(頁面的執行過程是指將php文件解析為對應的html文件的耗時,而不是用戶在該頁面上的停留時間),session文件是被鎖定的。
推薦教程:PHP視頻教程
B. PHP session幹嘛用的舉個簡單易懂的例子
session是一個會話,以數組形式存在,並且有一定的有效期,存儲在伺服器端,而且,他的最大的特性就是具有唯一性!
所謂的唯一性,就是說,在不同的客戶端訪問,session的值是不相同的。
常用於記錄用戶的個人信息,比如網站的登錄等!
session寫入後,在有效期內,無需其他操作即可在同一網站中的任何一個php文件進行訪問!
比如,在登錄頁面寫入 $_SESSION['UserName'] = 'abc';
那麼,在其他頁面可以使用 $_SESSION['UserName']取得這個session的值,根據這個值可以判定用戶是否登錄、登錄的是哪個用戶賬戶等!
需要注意的是,在使用session之前,需要開啟session,代碼是session_start();
而且,在寫入session之前,不能向頁面有任何的代碼輸出,包括html、css、js等等
比如:
<html>
<?php
session_start();
$_SESSION['abc'] = 123;
?>
這樣是錯誤的語法,因為之前輸出了<html>這個標簽!
C. 為什麼設置php的session
一、介紹
PHP中session默認過期時間是1440S,超過這個時間沒有頁面刷新或者用戶關閉了瀏覽器,session就會失效。
二、設置
session文件存儲在伺服器端,通過保存在用戶端的SessionId與服務鍵液戚器進行交互,session的配置文件是php.ini,相關參數如下:
1.session.use_cookies = 1,默認1,代表SessionId通過cookie來傳遞,否則會用Query_String
2.session.name = PHPSESSID,默認PHPSESSID,代表SessionID儲存的變數名稱,可能是Cookie,也可能是Query_String來傳遞
3.session.cookie_lifetime = 604800,是SessionID在客戶端Cookie儲存的時間,默認是0,代表瀏覽器一關閉SessionID立即失效,這里我設置了7天
4.session.gc_maxlifetime = 604800,默認是1440,代表session在伺服器端保留的時間,超過這個時間就會失效。這里我設置了7天,與客戶端的cookie有效時間一致
三、其他情況
一般情況下把這四個值設置好之後就可以更改session的有效期了,但是當多個站點的session文件都保存在公用埋桐臨時路徑時,由於php的GC(Garbage Collector)機制,某個站點啟動垃圾回收機制,都會把公用臨時文件目錄下的文件全部清除,這就會導致稿陵session失效,解決方法就是更改php.ini里session文件的保存路徑:
session.save_path=『你的路徑』;
D. php中如何使用SESSION
1、在php中使用session,首先要啟動session會話,啟動session會話要使用php內置函數session_start(),如圖所示。

