session工做機制是:當程序須要爲某個客戶端的請求建立一個session的時候,服務器首先會檢查這個客戶端是否包含了一個session標誌,咱們稱之爲session_id,若是客戶端不包含session_id,會從新生成一個session_id。
session關閉條件:1.啓用了session_destroy重置函數時候刪除2session的上次活動時間距離當前時間的間隔超過了session的超時設置時間也會自動關閉3.服務器進程被中止
session的默認生命週期在php5裏是180分鐘(每一個客戶端訪問都會留一個session的小文本佔用一點內存作記錄,因此要按期清除必定的session,爲了保證性能)
與session相關的一些經常使用函數:
1. session_id 獲取當前的session_id 會話識別id
若是指定了 id 參數的值, 則使用指定值做爲會話 ID。 必須在調用 session_start() 函數以前調用 session_id() 函數。 不一樣的會話管理器對於會話 ID 中可使用的字符有不一樣的限制。
2.session_name — 讀取/設置會話名稱 session_name() 函數返回當前會話名稱。 若是指定 name 參數, session_name() 函數會更新會話名稱, 並返回 原來的 會話名稱。
3.session_save_path ([ string $path ] ) session的保存地址 默認的保存文件名稱是sess_SESSIONID
session的默認讀取函數
4.session_set_save_handler
設置用戶自定義會話存儲函數 默認的使用例子
class MySessionHandler implements SessionHandlerInterface
{
// 在這裏實現接口
}
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();
php.ini裏與session相關的最經常使用的設置:
1.session.use_cookies默認值是1.表示用cookie來傳遞session_id(),反之是用query_string來傳遞
2.session.name 這是用來儲存session_id的鍵值,默認是PHPSESSID。session經過這個來保存session的信息
3.session.cookie_lifetime:這個表明SessionID在客戶端Cookie儲存的時間,默認是0,表明瀏覽器一關閉SessionID就做廢……就是由於這個因此Session不能永久使用!
4.session.gc_maxlifetime = 1440 這個是Session數據在服務器端儲存的時間,若是超過這個時間,那麼Session數據就自動刪除!
5.session的保存路徑:(有些系統沒有權限讀取默認的session儲存路徑Linux裏是/tmp)
session_save_path(dirname(__FILE__).'/phpernote/');
設置保存路徑的時候,須要先先於session_start()的啓動 不然是保存不了的
ini_set('session.save_path', dirname(__FILE__).'/phpernote/');php