thinkphp session过期时间设置

具体思路:

1.session时间设置

'SESSION_OPTIONS'         =>  array(
'expire' => 14400, //SESSION保存4小时
),

2.php采用cron回收session

补充:gc是按概率回收,所以先不考虑

参考:

http://asika.windspeaker.co/post/3979-ubuntu-%E4%B8%AD-php-session-%E9%81%8E%E6%9C%9F%E6%99%82%E9%96%93%E7%84%A1%E6%B3%95%E8%87%AA%E8%A8%82%E7%9A%84%E5%95%8F%E9%A1%8C

     有自己在 Ubuntu 或 Debian 系統上開發 PHP 的人應該會發現,自己寫的會員登入 Remember Me 好像都無法作用。明明 Session 與 Cookie 時間都設的非常長了,卻還是會自動過期。

     這是因為 Debian 會覆蓋 PHP 本身的 session.gc_maxlifetime 造成的。如果我們今天採用原生的 Session 處理機制,預設會把 session 資料存在 /var/lib/php5 裡面。

     但在 Debian 中,PHP 的 session.gc_probability 被設成 0,意味著 Session 垃圾回收永遠不會進行,取而代之的是 Debian 自行設定的 Cronjob 來清除過期 Sessions,它的位置在: /etc/cron.d/php5

  # /etc/cron.d/php5: crontab fragment for php5
  #  This purges session files older than X, where X is defined in seconds
  #  as the largest value of session.gc_maxlifetime from all your php.ini
  #  files, or 24 minutes if not defined.  See /usr/lib/php5/maxlifetime

  # Look for and purge old sessions every 30 minutes
  09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime)
  由此可知,Debian 會每 30 分鐘清除一次 session(原生 php 的session過期時間是24分鐘),所以我們怎麼設定過期時間都是無效的。

Session Timeouts:

  http://www.fossology.org/projects/fossology/wiki/Admin-timeouts

  # Look for and purge old sessions every 30 minutes
  09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] 
  && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm

PHP session回收机制及php.ini session生命期gc_maxlifetime配置/gc_maxlifetime无效:

  http://www.cnblogs.com/acpp/archive/2011/06/10/2077592.html

彻底理解PHP的SESSION机制:

  http://lhdst-163-com.iteye.com/blog/1743662

 

posted @ 2015-12-09 20:24  lifeinearth  阅读(2551)  评论(0编辑  收藏  举报