php配置session相關知識

來源:互聯網
上載者:User
>>本文連結地址: php配置session相關知識

php session有一個GC功能,就是Garbage Collector。這個GC啟動的時候,會清除那些已經“逾時”的session。它的工作原理:

1.使用者訪問並登陸網站,這時候後台會調用session_start來嘗試產生一個會話(如果已經有會話,則相當於一次有效會話請求)
2.對於這樣的每一次有效會話請求(Request),apache的php模組會根據session相關的全域變數gc_probability/gc_divisor =>計算出啟動GC的機率,並由此機率來決定在這次請求中是否應該啟動GC。舉例來說,session.gc_probability的預設值為1,session.gc_divisor的預設值為100,則啟動“記憶體回收”器的機率是1%,這就意味著在每100次請求中,會有可能清理一次到期會話
3.如果GC啟動,則GC會掃描當前會話所在路徑(session.save_path)下的所有會話檔案,並根據另外一個全域變數session.gc_maxlifetime的多少來判斷哪些session已經到期(“目前時間”與“會話檔案的atime或者mtime”之間的差大於gc_maxlifetime:到期),並刪除這些到期的session
4.如果你在一個session啟動後,長時間沒有任何互動操作(譬如,不停地碼字,沒有提交或者儲存為草稿),那麼你的儲存在背景會話檔案將得不到機會被修改或者訪問,在gc_maxlifetime(預設值1440秒=24分鐘)時間後,它有可能因失效而被清理,這以後你再提交,就會因為會話失效而報錯

而關於SESSION 到期大家也應該有更明確的認識
只有session.cookie_lifetime 控制SESSIOn的到期時間.可以通過直接修改ini,或者通過ini_set();以及session_set_cookie_params()來修改。
雖然gc的最大到期時間可能比Session的到期時間短,但是還是按照session的到期時間到期。
注意: WEB是觸發式的。所以在你直接關閉IE的情況下,session檔案也是依然會存在的。

session預設以檔案方式儲存,不過太多的session在一個目錄下是不利於存取的。php.ini裡面有個設定可以讓session分子目錄儲存
session.save_path = “N;/path” N表示幾級子目錄,比如你可以設定成 session.save_path = “2;/tmp”
但是你設定成分子目錄後,原來的garbage collection 就沒用了,需要你自己去清楚到期session,比如用個shell定時執行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.