程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php之session高級

php之session高級

編輯:關於PHP編程

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;
    }




 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved