91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何解決PHP中Session文件過多的問題

發布時間:2021-09-01 13:53:46 來源:億速云 閱讀:174 作者:小新 欄目:開發技術

小編給大家分享一下如何解決PHP中Session文件過多的問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、session文件是什么

文件一般為 /tmp/sessions/sess_4b1e384ad74619bd212e236e52a5a174If

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

二、session回收何時發生

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

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

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

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

三、設置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

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

其他方式

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

使用cookie,但是cookie得加密

五、使用tmfs存儲session

1、將/tmp掛載為 tmpfs文件系統

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

mount -a 

2、創建session存儲文件夾

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

#!/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

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

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

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

session.save_path = "3;/tmp/sessions

4、session的回收

使用上面的腳本即可

下面給大家說下php session 數據保存在哪里?

當然是在服務器端,但不是保存在內存中,而是保存在文件或數據庫中。

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

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

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

以上是“如何解決PHP中Session文件過多的問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开封县| 松潘县| 吴江市| 信宜市| 兴仁县| 利川市| 闸北区| 永丰县| 太仆寺旗| 泾源县| 蓬安县| 尼玛县| 虹口区| 宁河县| 黔江区| 林西县| 周宁县| 西宁市| 平邑县| 岑溪市| 合水县| 当涂县| 赤壁市| 南涧| 井陉县| 麻城市| 三门峡市| 临清市| 西平县| 普兰店市| 上犹县| 鹿泉市| 墨竹工卡县| 正阳县| 长海县| 奇台县| 临颍县| 探索| 济阳县| 重庆市| 平湖市|