我想增加我的php會話時間至6小時。增加php會話時間
這裏是增加會話時間代碼:
ini_set('session.gc_maxlifetime', 60 * 60 * 6); // 6 Hours
然而,似乎只有1個小時的會話時間。
任何建議,非常感謝。
此外,如何測試此功能,而無需等待6個小時以查看會話是否超時。
我想增加我的php會話時間至6小時。增加php會話時間
這裏是增加會話時間代碼:
ini_set('session.gc_maxlifetime', 60 * 60 * 6); // 6 Hours
然而,似乎只有1個小時的會話時間。
任何建議,非常感謝。
此外,如何測試此功能,而無需等待6個小時以查看會話是否超時。
你還需要改變你的php.ini
參考http://prajapatinilesh.wordpress.com/2009/01/14/manually-set-php-session-timeout-php-session/的參數一對夫婦更多的變數。
使用本
ini_set('session.gc_maxlifetime', 6 * 60 * 60); // 6 Hours instead to this
ini_set('session.gc_maxlifetime', 60 * 60 * 6); // 1 Hours
ini_set('session.gc_maxlifetime', [hours] * [minutes] * [seconds]);
這根本不正確。乘法的順序無關緊要。 – FoolishSeth 2012-10-27 08:34:43
這就是我見過的最差的答案;) – misantronic 2017-02-09 18:29:45
嘗試以下各項
的ini_set( '的session.gc_maxlifetime',60 * 60 * 6);
或者
的ini_set( '的session.gc_maxlifetime',21600);
空格不重要,也不需要手動將值相乘。爲什麼這個問題似乎吸引了這樣的反應? – Leng 2013-11-13 23:24:31
如果存在使用相同session.save_path的另一個腳本(例如,其他虛擬主機),則通過ini_set增加session.gc_maxlifetime可能不起作用。其他腳本由它自己的生命週期中刪除所有腳本的會議:
注:
如果不同的腳本具有不同的session.gc_maxlifetime數值但是共享了同一個地方存儲會話數據,則該腳本最小值將清理數據。在這種情況下,請將此指令與session.save_path一起使用。
來源:http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime
另外,請務必在session_start前更改設置()。如果啓用了session.auto_start,則在使用ini_set時會晚。
場景
你運行Debian Linux或Ubuntu Linux操作系統。您希望PHP會話持續時間超過默認的1440秒(24分鐘)。所以,你這樣做:
ini_set('session.gc_maxlifetime', 10800); # 3 hours
使用此設置,會議應至少三小時保持活動狀態,只要用戶不關閉其browser.1
但是不管你做什麼,會話在24-54分鐘後不斷刪除。看來PHP忽略了gc_maxlifetime設置。
爲什麼發生這種情況
Debian和Ubuntu Linux的覆蓋PHP的會話行爲。如果仔細觀察,您會發現session.gc_probability被設置爲0,這意味着PHP的垃圾收集將永遠不會運行。相反,/etc/cron.d/php5中有一個特定於Debian的cron作業,每30分鐘運行一次!
cron作業基於php.ini中的全局session.gc_maxlifetime進行垃圾回收。應用中的session.gc_maxlifetime被忽略。
解決方案
雖然你可以禁用cron作業和/或修改php.ini中,我更願意解決問題,而無需修改系統默認值。更好的解決方案是創建自己的會話目錄,在正常的目錄之外的某個地方,然後在本地啓用PHP的會話垃圾回收。
爲此,set session.gc_maxlifetime, session.gc_probability, session.gc_divisor, and session.save_path
:
# Session lifetime of 3 hours
ini_set('session.gc_maxlifetime', 10800);
# Enable session garbage collection with a 1% chance of
# running on each session_start()
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 100);
# Our own session save path; it must be outside the
# default system save path so Debian's cron job doesn't
# try to clean it up. The web server daemon must have
# read/write permissions to this directory.
session_save_path(APP_PARENT_DIR . '/sessions');
# Start the session
session_start();
這個答案似乎是從這個博客文章複製:http://natesilva.tumblr.com/post/250569350/php-sessions-timeout-too-soon-no-matter-how-you。你是博客的作者,還是你找到它並複製相關信息? – Edward 2017-01-25 20:40:31
是'ini_set'允許你的系統?你在'session_start()'之前調用它嗎? – Czechnology 2011-03-08 20:52:05
當你在'ini_set()'之後的同一頁上執行'phpinfo()'時,'session.gc_maxlifetime'的條目是什麼意思? – drudge 2011-03-08 20:54:33
我想將會話超時創建爲6小時,但我的瀏覽器在1/2小時內超時。我在PLESK服務器上。 我更新的.htaccess有設置: php_value的session.gc_maxlifetime 21600 php_value session.cache_expire 21600 php_value session.cookie_lifetime 21600 下面是相關的phpinfo: 的session.gc_maxlifetime \t本地= 21600 \t主= 1440 session.cache_expire \t local = 21600 \t master = 180 session.gc_maxlifetime \t local = 21600 \t master = 1440 – Ken 2011-03-10 19:19:15