欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于PHP中Session文件過多的問題及session文件保存位置

 更新時(shí)間:2016年03月17日 10:14:42   作者:chenpingzhao  
PHP的默認(rèn)機(jī)制:每一次php請求,會有1/100的概率(默認(rèn)值)觸發(fā)“session回收”。接下來通過本文給大家介紹關(guān)于PHP中Session文件過多的問題及session文件保存位置,需要的朋友參考下

PHP的默認(rèn)機(jī)制:每一次php請求,會有1/100的概率(默認(rèn)值)觸發(fā)“session回收”。如果“session回收”發(fā)生,那就會檢查/tmp/sess_*的文件,如果最后的修改時(shí)間到現(xiàn)在超過了1440秒(gc_maxlifetime的值),就將其刪除,意味著這些session過期失效

一、session文件是什么

文件一般為 /tmp/sessions/sess_4b1e384ad74619bd212e236e52a5a174If

username|s:9:"test";admin|s:1:"0";

二、session回收何時(shí)發(fā)生

默認(rèn)情況下,每一次php請求,就會有1/100的概率發(fā)生回收,所以可能簡單的理解為“每100次php請求就有一次回收發(fā)生”。這個(gè)概率是通過以下參數(shù)控制的

#概率是gc_probability/gc_divisor
session.gc_probability = 1
session.gc_divisor = 100 

假設(shè)這種情況gc_maxlifetime=120,如果某個(gè)session文件最后修改時(shí)間是120秒之前,那么在下一次回收(1/100的概率)發(fā)生前,這個(gè)session仍然是有效的。

如果你的session使用session.save_path中使用別的地方保存session,session回收機(jī)制有可能不會自動處理過期session文件。這時(shí)需要定時(shí)手動(或者crontab)的刪除過期的session

三、設(shè)置session存儲目錄

使用php5-fpm的話, 修改/etc/php5/fpm/php.ini, 修改或添加下面一行:

session.save_path = 3;600:/tmp/sessions 

四、session清除腳本

#!/bin/sh
find /tmp/php-session -cmin +24 -name "sess_*" -and -size 0 -delete > /dev/null 2>&1
find /tmp/php-session -cmin +1440 -name "sess_*" -delete > /dev/null 2>&1 

這里的時(shí)間我們可以通過 session.gc_maxlifetime 來獲取,放到定時(shí)任務(wù)里面即可(crontab)

其他方式

使用memcache 等 ,(session.save_handler = memcache)

使用cookie,但是cookie得加密

五、使用tmfs存儲session

1、將/tmp掛載為 tmpfs文件系統(tǒng)

修改/etc/fstab,在最后一行添加如下內(nèi)容:/tmp/sessions tmpfs defaults,size=5120m 0 0

mount -a  

2、創(chuàng)建session存儲文件夾

php并不會自動去創(chuàng)建這些文件夾,不過在源文件中提供了一些創(chuàng)建文件夾的腳本。下面這個(gè)腳本也好用,腳本內(nèi)容如下

#!/bin/sh
dir="0 1 2 3 4 5 6 7 8 9 a b c d e f"
for levela in $dir;
do
for levelb in $dir;
do
for levelc in $dir;
do
mkdir -p /tmp/sessions/$levela/$levelb/$levelc;
done
done;
done
chown -R root:webgrp /tmp/sessions && chmod -R 1777 /tmp/sessions 

因?yàn)?tmp/sessions是用的內(nèi)存,服務(wù)器重啟后,里面的所有文件都會丟失,所以,需要把上面的腳本加入到 /etc/rc.local中,并且要放在啟動php之前

3、將session存儲到不同的目錄中

php本身支持session的多級散列,在php.ini中,將 ;session.save_path = /tmp 改為

session.save_path = "3;/tmp/sessions 

4、session的回收

使用上面的腳本即可

下面給大家說下php session 數(shù)據(jù)保存在哪里?

當(dāng)然是在服務(wù)器端,但不是保存在內(nèi)存中,而是保存在文件或數(shù)據(jù)庫中。

默認(rèn)情況下,php.ini 中設(shè)置的 SESSION 保存方式是 files(session.save_handler = files),即使用讀寫文件的方式保存 SESSION 數(shù)據(jù),而 SESSION 文件保存的目錄由 session.save_path 指定,文件名以 sess_ 為前綴,后跟 SESSION ID,如:sess_c72665af28a8b14c0fe11afe3b59b51b。文件中的數(shù)據(jù)即是序列化之后的 SESSION 數(shù)據(jù)了。

如果訪問量大,可能產(chǎn)生的 SESSION 文件會比較多,這時(shí)可以設(shè)置分級目錄進(jìn)行 SESSION 文件的保存,效率會提高很多,設(shè)置方法為:session.save_path="N;/save_path",N 為分級的級數(shù),save_path 為開始目錄。

當(dāng)寫入 SESSION 數(shù)據(jù)的時(shí)候,PHP 會獲取到客戶端的 SESSION_ID,然后根據(jù)這個(gè) SESSION ID 到指定的 SESSION 文件保存目錄中找到相應(yīng)的 SESSION 文件,不存在則創(chuàng)建之,最后將數(shù)據(jù)序列化之后寫入文件。讀取 SESSION 數(shù)據(jù)是也是類似的操作流程,對讀出來的數(shù)據(jù)需要進(jìn)行解序列化,生成相應(yīng)的 SESSION 變量。

相關(guān)文章

  • PHP實(shí)現(xiàn)微信支付(jsapi支付)和退款(無需集成支付SDK)流程教程詳解

    PHP實(shí)現(xiàn)微信支付(jsapi支付)和退款(無需集成支付SDK)流程教程詳解

    本篇文章給大家介紹PHP實(shí)現(xiàn)微信支付(jsapi支付)和退款(無需集成支付SDK)流程教程詳解,使用了微信官方給的php版本的sdk,但是在使用過程中有很多問題,今天給大家講講不集成支付SDK直接調(diào)用支付接口實(shí)現(xiàn)支付和退款,感興趣的朋友一起看看吧
    2018-03-03
  • Yii rules常用規(guī)則示例

    Yii rules常用規(guī)則示例

    這篇文章主要介紹了Yii rules常用規(guī)則,結(jié)合實(shí)例形式分析了rules規(guī)則的功能,定義及具體使用方法,需要的朋友可以參考下
    2016-03-03
  • destoon實(shí)現(xiàn)調(diào)用自增數(shù)字從1開始的方法

    destoon實(shí)現(xiàn)調(diào)用自增數(shù)字從1開始的方法

    這篇文章主要介紹了destoon實(shí)現(xiàn)調(diào)用自增數(shù)字從1開始的方法,很有實(shí)用價(jià)值的一個(gè)技巧,需要的朋友可以參考下
    2014-08-08
  • Laravel框架生命周期與原理分析

    Laravel框架生命周期與原理分析

    這篇文章主要介紹了Laravel框架生命周期與原理,結(jié)合實(shí)例形式總結(jié)分析了Laravel框架針對用戶請求響應(yīng)的完整運(yùn)行周期、流程、原理,需要的朋友可以參考下
    2018-06-06
  • Swoole源碼中如何查詢Websocket的連接問題詳解

    Swoole源碼中如何查詢Websocket的連接問題詳解

    這篇文章主要給大家介紹了關(guān)于Swoole源碼中如何查詢Websocket的連接問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Yii框架form表單用法實(shí)例

    Yii框架form表單用法實(shí)例

    這篇文章主要介紹了Yii框架form表單用法,實(shí)例分析了Yii中form表單的實(shí)現(xiàn)方法與相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • Laravel相關(guān)的一些故障解決

    Laravel相關(guān)的一些故障解決

    這篇文章主要給大家介紹了關(guān)于Laravel相關(guān)的一些故障的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Laravel具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Laravel框架在本地虛擬機(jī)快速安裝的方法詳解

    Laravel框架在本地虛擬機(jī)快速安裝的方法詳解

    這篇文章主要介紹了Laravel框架在本地虛擬機(jī)快速安裝的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Laravel框架的安裝步驟、操作注意事項(xiàng),并附帶說明了centos7環(huán)境下php7編譯安裝curl擴(kuò)展的具體操作步驟,需要的朋友可以參考下
    2018-06-06
  • php讀取der格式證書亂碼解決方法

    php讀取der格式證書亂碼解決方法

    這篇文章主要介紹了php讀取der格式證書亂碼解決方法的相關(guān)資料,需要的朋友可以參考下
    2015-06-06
  • php面向?qū)ο蠡A(chǔ)詳解【星際爭霸游戲案例】

    php面向?qū)ο蠡A(chǔ)詳解【星際爭霸游戲案例】

    這篇文章主要介紹了php面向?qū)ο蠡A(chǔ),結(jié)合星際爭霸游戲案例詳細(xì)分析了PHP面向?qū)ο箢?、繼承、重載、接口等相關(guān)概念與使用技巧,需要的朋友可以參考下
    2020-01-01

最新評論