php中設定session到期時間方法

來源:互聯網
上載者:User

我們最常用的是在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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.