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

php中設置session過期時間方法

編輯:關於PHP編程

在apache與php的環境中默認過期時間是20分鐘左右,那麼我們要怎麼設置session過期呢,下面看具體方法總結。

我們最常用的是在php程序中設置

 代碼如下 復制代碼

<?php
if(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])>60)
 $_SESSION['last_access'] = time();
?>

這樣就搞定了,如果要設置過期的話也可以在程序中實例

 代碼如下 復制代碼

<?php
unset($_SESSION['last_access']) 或 $_SESSION['last_access']='';
?>

session有過期的機制


session.gc_maxlifetime  原來session 過期是一個小概率的事件,分別使用session.gc_probability和session.gc_divisor 來確定運行session 中gc 的概率  session.gc_probability和session.gc_divisor的默認值分別為 1和100 

分別為分子和分母  所以session中gc的概率運行機會為1% 。如果修改這兩個值,則會降低php的效率。所以這種方法是不對的!!

所以,修改php.ini文件中的gc_maxlifetime變量就可以延長session的過期時間了:(例如,我們把過期時間修改為86400秒)

 代碼如下 復制代碼

session.gc_maxlifetime = 86400

然後,重啟你的web服務(一般是apache)就可以了。

session“回收”何時發生?

默認情況下,每一次php請求,就會有1/100的概率發生回收,所以可能簡單的理解為“每100次php請求就有一次回收發生”。這個概率是通過以下參數控制的

 代碼如下 復制代碼

#概率是gc_probability/gc_divisor
session.gc_probability = 1
session.gc_divisor = 100


注意1:假設這種情況gc_maxlifetime=120,如果某個session文件最後修改時間是120秒之前,那麼在下一次回收(1/100的概率)發生前,這個session仍然是有效的。

注意2:如果你的session使用session.save_path中使用別的地方保存session,session回收機制有可能不會自動處理過期session文件。這時需要定時手動(或者crontab)的刪除過期的session:cd /path/to/sessions; find -cmin +24 | xargs rm

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