《PHP學習:php 如何設置一個嚴格控制過期時間的session》要點:
本文介紹了PHP學習:php 如何設置一個嚴格控制過期時間的session,希望對您有用。如果有疑問,可以聯系我們。
1.php session 有效期PHP實例
PHP的session有效期默認是1440秒(24分鐘),如果客戶端超過24分鐘沒有刷新,當前session會被回收,失效.PHP實例
當用戶關閉瀏覽器,會話結束,session也會失效.PHP實例
可以修改php.ini的session.gc_maxlifetime來設置session的生命周期,但并不能保證在超過這一時間后session信息立即會刪除.因為GC是按機率啟動的,可能在某一個長時間內都沒有被啟動.那么大量的session在超過session.gc_maxlifetime后仍然有效.PHP實例
2.session.gc_maxlifetime,session.gc_probability,session.gc_divisor說明PHP實例
session.gc_maxlifetime = 30 表示當session文件在30秒后沒有被訪問,則視為過期session,等待GC回收.PHP實例
GC進程調用的概率是通過session.gc_probability/session.gc_divisor計算得來的,而session.gc_divisor默認是1000,PHP實例
如果session.gc_probability = 1000,那么GC進程在每次執行session_start()時都會調用,執行回收.PHP實例
把session.gc_probability/session.gc_divisor的機率提高,會有幫助,但會對性能造成嚴重影響. PHP實例
3.嚴格控制session過期方法PHP實例
1.使用memcache/Redis來保存session,設置過期時間,因為memcache/redis的回收機制不是按機率的,可以確保session過期后失效.PHP實例
2.只使用php實現,創建一個session類,在session寫入時,把過期時間也寫入.讀取時,根據過期時間判斷是否已過期.PHP實例
<?php /** * Session控制類 */ class Session{ /** * 設置session * @param String $name session name * @param Mixed $data session data * @param Int $expire 超時時間(秒) */ public static function set($name, $data, $expire=600){ $session_data = array(); $session_data['data'] = $data; $session_data['expire'] = time()+$expire; $_SESSION[$name] = $session_data; } /** * 讀取session * @param String $name session name * @return Mixed */ public static function get($name){ if(isset($_SESSION[$name])){ if($_SESSION[$name]['expire']>time()){ return $_SESSION[$name]['data']; }else{ self::clear($name); } } return false; } /** * 清除session * @param String $name session name */ private static function clear($name){ unset($_SESSION[$name]); } } ?>
demo:PHP實例
<?php session_start(); $data = '123456'; session::set('test', $data, 10); echo session::get('test'); // 未過期,輸出 sleep(10); echo session::get('test'); // 已過期 ?>
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持維易PHP!PHP實例
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/848.html