phpsession配置


1. 介紹

1.1 作用:

主要用於服務器端的會話保持。

1.2 結構:

Session分以下幾部分:

 1)Session id 用戶Session的唯一標識(隨機生成,具有唯一性,隨機性)

 2)Session data 保存用戶狀態信息(用戶數據) 

 3)Session file Session的存儲方式,文件存儲方式以"sess_"前綴+"Session_id"后綴的方式存儲 格式如下: 1 sess_d3eom13a9r9p5i5nj923voqaf7 

 4)Session lifetime Session生存時間(從Session的產生到生命周期的結束)

1.3 工作原理:

 1)客戶端與服務器建立聯系 

 2)客戶端將session id傳遞給服務器 

 3)服務器根據session id建立相應的session id文件(session id序列化保存,讀取時反序列化) 

唯一標識的方法有兩種:cookie或者通過GET方式指定

1.4 缺點:

1)使用Session會影響系統性能(受文件系統設計影響,目錄定義超過10000個文件非常耗時) 

2)Session文件大小1~2K,數量龐大的小文件影響硬盤IO性能

    PS:此可以使用redis memcache的方式來共享session ,同時也解決了影響系統性能的問題

2.配置文件:

[Session]

 session.save_handler = files #session的存儲方式

 session.use_cookies= 1 #使用cookies在客戶端保存會話 

 session.use_only_cookies = 1 #去保護URL中傳送session id的用戶

 session.name = PHPSESSID #session名稱(默認PHPSESSID)

 session.auto_start = 0 #不啟用請求自動初始化session

 session.cookie_lifetime = 0 #cookie存活時間(0為直至瀏覽器重啟,單位秒) 

 session.cookie_path = / #cookie的有效路徑 

 session.cookie_domain = #cookie的有效域名

 session.cookie_httponly = #httponly標記增加到cookie上(腳本語言無法抓取) 

 session.serialize_handler = php #PHP標准序列化 

 session.gc_probability =1 

 session.gc_divisor =1000 #建議設置1000-5000 #概率=session.gc_probability/session.gc_divisor(1/1000 #頁面訪問越頻繁概率越小   session.gc_maxlifetime =1440 #過期時間(默認24分鍾,單位秒) 

 session.bug_compat_42 = off #全局初始化session變量 

 session.bug_compat_warn = off 

 session.referer_check = #防止帶有ID的外部URL 

    session.entopy_length = 0 #讀取的字節 

 session.cache_limiter = {nocache,private,pblic} #HTTP緩沖類型

 session.cache_expire = 180 #文檔過期時間(分鍾) 

   session.use_trans_sid = 1 #trans_sid支持(默認0)

 session.hash_function = 0 #hash方法{0:md5(128 bits),1:SHA-1(160 bits)} 

 session.hash_bits_per_character = 5 #當轉換二進制hash數據奧可讀形式是,每個字符保留位數

 session.save_path = "/var/lib/php/session" #session id存放路徑

可以分層存放phpsession,更高效率的去查找session文件

  格式: session.save_path = "N;MODE;/path"

-- N定義目錄層數(例如2,目錄需手動創建)

-- MODE定義單目錄最大會話文件數量(默認8進制600)

配置好之后,需要按自定義的目錄層數,需結合hash_bits_per_character參數來生成目錄結構

#!/bin/bash
perl -e '
       $dir="./phpsession";
       @N=(0..9,"a".."z");
       for $i (0..$#N) {
               mkdir "$dir/$N[$i]";
               for $j (0..$#N) {
                       mkdir "$dir/$N[$i]/$N[$j]";
                       for $k (0..$#N) {
                               mkdir "$dir/$N[$i]/$N[$j]/$N[$k]";
                       }
               }
       }'

 

 

 

PS:

 4 bits: 0-9, a-f

 5 bits: 0-9, a-v

 6 bits: 0-9, a-z, A-Z, "-", ","


免責聲明!

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



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