php之session進階
此篇主要微微講解一下session的進階用法
php.ini設定檔中有關session進階的配置:
session.save_path:session儲存地址(原路徑:C:/Users/ADMINI~1/AppData/Local/Temp)
session_name:session擷取到的名稱
session.use_trans_sid:啟用SID支援
session.gc_maxlifetime: 記憶體回收行程, 指定過了多少秒之後資料就會被視為垃圾,並被清除
session.gc_probability=1
session.gc_divisor=100
這兩合起來就是啟動gc進程管理機率的
初始化時(session_start())
機率=session.gc_probability/session.gc_divisor
session.use_cookie = 1:是否使用cookie
session.cookie_path = '/':cookie儲存路徑
session.cookie_domain = '': 一般不用改
session.cookie_lifetime = 0: 儲存時間長
session.save_handler = files:用檔案來儲存會話信,改成user
session.save_handler=memcache: 如果是memcache,那麼save_path=tcp://localhost:11211
一、首先在設定檔中將session.save_handler的值改為user (原本是files),將session資料儲存路徑改到D盤
二、在根目錄下建立相關的檔案
session.php 是公用的標頭檔,one.php 是session註冊事件檔案,two.php 是測試檔案,three.php 是登出檔案
one.php:
";
two.php:
'; echo session_name().'='.session_id()."";
three.php:
";
對於公用的標頭檔 session.php 相對重要,這之前必須先將設定檔中的
必須將session.serialize_handler = file的值改為user
session.php 要使用到 session_set_save_handler() 函數,查看手冊其用到的參數,再開啟session
session_set_save_handler("open","close","read","write","destroy","gc");session_start();
再根據參數寫出各個方法,重點是把握各個函數執行的時間
open():
//在運行session_start()是調用,讀取session到$_SESSION中 function open($save_path, $session_name){ global $sess_save_path; //將儲存路徑設定為全域變數 $sess_save_path=$save_path; //讀取的路徑給儲存路徑 return true; }
close():
//session_wirte_close()和session_destroy() function close(){ return true; }
read():
//session_start(),$_SESSION //自動把session_id傳進來 function read($id){ global $sess_save_path; $sess_file=$sess_save_path."/kf_".$id; return (string)@file_get_contents($sess_file); }
write():
//指令碼結束時和使用session_write_close()強制提交SESSION資料時 //直接調用$_SESSION[]="aaa"; function write($id, $sess_data){ global $sess_save_path; //定義儲存檔案及檔案名稱 $sess_file=$sess_save_path."/kf_".$id; if($fp=@fopen($sess_file, "w")){ $return=fwrite($fp, $sess_data); fclose($fp); return $return; }else{ return false; } }
的story()和gc():(刪除和記憶體回收)
//session_destroy()時 function destroy($id){ global $sess_save_path; $sess_file=$sess_save_path."/kf_".$id; //刪除路徑對象的檔案 return @unlink($sess_file); } //session.gc_probability和session.gc_divisor決定的,在open()和read()讀資料時, function gc($maxlifetime){ global $sess_save_path; //所有到期的都要刪除 //glob遍曆出所有以"/kf"的檔案作為每一個檔案 foreach(glob($sess_save_path."/kf_*") as $filename){ if(filetime($filename)+$maxlifetime < time()){ @unlink($filename); echo $filename; } } return true; }
http://www.bkjia.com/PHPjc/971081.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/971081.htmlTechArticlephp之session進階 此篇主要微微講解一下session的進階用法 php.ini設定檔中有關session進階的配置: session.save_path:session儲存地址(原路徑:C...