溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php session不起作用怎么辦

發(fā)布時間:2020-08-24 14:47:05 來源:億速云 閱讀:352 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)php session不起作用怎么辦的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

php session不起作用的解決辦法:首先在頁面的開始處調(diào)用“session_save_path()”函數(shù);然后把保存session的目錄指向一個專用的目錄即可。

php session不起作用怎么辦

php Session失效的原因

最近公司的項目出現(xiàn)了一個Session失效的問題,程序運行之后,session不到幾分鐘就失效了。后來在網(wǎng)上看了很久,了解了它的機理:Session在lunix里面是存儲在公共的路徑里面,這就會導(dǎo)致一個問題,如果程序里面有很多的Session應(yīng)用,就會相互的影響。

后來我嘗試修改session.gc_maxlifetime 但是我發(fā)現(xiàn)這個參數(shù)基本不起作用。在默認情況下,PHP 中的session信息會以文本文件的形式,被保存在系統(tǒng)的臨時文件目錄中。這個路徑由配置參數(shù)session.save_path指定。在Linux下,這一路徑通常為\tmp,在 Windows下通常為C:\Windows\Temp。當(dāng)服務(wù)器上有多個PHP應(yīng)用時,它們會把自己的session文件都保存在同一個目錄中(因為它們使用同一個session.save_path參數(shù))。同樣地,這些PHP應(yīng)用也會按一定機率啟動GC,掃描所有的session文件。

  問題在于,GC在工作時,并不會區(qū)分不同站點的session。舉例言之,站點A的gc_maxlifetime設(shè)置為2小時,站點B的 gc_maxlifetime設(shè)置為默認的24分鐘。當(dāng)站點B的GC啟動時,它會掃描公用的臨時文件目錄,把所有超過24分鐘的session文件全部刪除掉,而不管它們來自于站點A或B。這樣,站點A的gc_maxlifetime設(shè)置就形同虛設(shè)了。

所以具體操作就是每個項目擁有自己的session路徑,找到問題所在,解決起來就很簡單了。在頁面的開始處調(diào)用session_save_path()函數(shù),它能夠修改session.save_path參數(shù),把保存session的目錄指向一個專用的目錄,例如\tmp\myapp\。這樣,gc_maxlifetime參數(shù)就工作正常了。

具體代碼:

session_start();
ini_set('session.save_path','/tmp/');
//6個鐘頭
ini_set('session.gc_maxlifetime',21600);
//保存一天
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");

感謝各位的閱讀!關(guān)于php session不起作用怎么辦就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI