国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 系統(tǒng)教程 Linux 了解php中session垃圾回收機制

了解php中session垃圾回收機制

Aug 08, 2024 am 09:08 AM
linux linux教程 紅帽 linux系統(tǒng) linux指令 linux認(rèn)證 紅帽linux linux視頻

1、php中session的生成機制

我們先來分析一下PHP中是怎麼產(chǎn)生一個session的。設(shè)計出session的目的是保持每個使用者的各種狀態(tài)來彌補HTTP協(xié)定的不足(無狀態(tài))。我們現(xiàn)在有一個疑問,我們都知道session是保存在伺服器的,既然它用來保持每個使用者的狀態(tài)那它利用什麼來區(qū)別使用者的呢?這時候就得借助cookie了。當(dāng)我們在程式碼中呼叫session_start();時,PHP會同時往SESSION的存放目錄(預(yù)設(shè)為/tmp/)和客戶端的cookie目錄各產(chǎn)生一個檔案。 session檔名這樣:

了解php中session垃圾回收機制

格式為sess_{SESSIONID} ,這時session檔案中沒有任何內(nèi)容,當(dāng)我們在session_start();新增了這兩行程式碼:

複製程式碼程式碼如下:
$_SESSION['name'] = 'wanchun0222';$_SESSION['blog'] = 'coderbolg.net'; 這時文件就有內(nèi)容了:
複製程式碼程式碼如下:
name|s:11:"wanchun0222";blog|s:13:"coderbolg.net";

這時再看看cookie:

了解php中session垃圾回收機制

可以看到伺服器為我們自動產(chǎn)生了一個cookie,cookie名稱為"PHPSESSID",cookie內(nèi)容是一串字符,其實這串字元就是{SESSIONID}。也許你已經(jīng)明白了,當(dāng)我們使用session時,PHP就先生成一個唯一的SESSIONID號(如2bd170b3f86523f1b1b60b55ffde0f66),再在我們伺服器的預(yù)設(shè)目錄下產(chǎn)生一個文件,文件名稱為sIONID同時在目前使用者的客戶端產(chǎn)生一個cookie,內(nèi)容已經(jīng)說過了。這樣PHP會為每一個使用者產(chǎn)生一個SESSIONID,也就是說一個使用者一個session檔。 PHP第一次為某個使用者使用session時就向客戶端寫入了cookie,當(dāng)這個使用者以後造訪時,瀏覽器會帶著這個cookie,PHP在拿到cookie後就讀出裡面的SESSIONID,拿著這個SESSIONID去session目錄下找session檔。找到後在呼叫$_SESSION['blog']的時候顯示出來。

2、php中session的過期回收機制
我們明白了session的生成及工作原理,發(fā)現(xiàn)在session目錄下會有許多session檔。當(dāng)然這些文件一定不是永遠(yuǎn)存在的,PHP一定提供了過期回收機制。在php.ini中

session.gc_maxlifetime為session設(shè)定了生存時間(預(yù)設(shè)為1440s)。如果session檔案的最後更新時間到現(xiàn)在超過了生存時間,這個session檔案就被認(rèn)為是過期的了。在下一次session回收的時候就會被刪除。那下一次session回收是在什麼時候呢?這和php請求次數(shù)有關(guān)的。在PHP內(nèi)部機制中,當(dāng)php被請求了N次後就會有一次觸發(fā)回收機制。到底是請求多少次觸發(fā)一次是透過以下兩個參數(shù)控制的:

複製程式碼程式碼如下:
session.gc_probability = 1session.gc_divisor = 100

這是php.ini的默認(rèn)設(shè)置,意思是每100次PHP請求就有一次回收發(fā)生。概率是 gc_probability/gc_divisor 。我們了解了服務(wù)器端的session過期機制,再來看看客戶端的cookie的過期機制。

如果cookie失效了瀏覽器自然發(fā)送不了cookie到服務(wù)器,這時即使服務(wù)器的session文件存在也沒用,因為PHP不知道要讀取哪個session文件。我們知道PHP的cookie過期時間是在創(chuàng)建時設(shè)置的,那么PHP在創(chuàng)建session的同時為客戶端創(chuàng)建的cookie的生命周期是多久呢?這個在php.ini中有設(shè)置:session.cookie_lifetime 。這個值默認(rèn)是0,代表瀏覽器一關(guān)閉SESSIONID就失效。那就是說我們把session.gc_maxlifetime和session.cookie_lifetime設(shè)置成同一個值就可以控制session的失效時間了。

3、php中session的客戶端存儲機制

由上面的介紹我們可以知道,如果用戶關(guān)閉了cookie,那我們的session就完全沒法工作了。是的,確實是這樣。php中session的客戶端存儲機制只有cookie嗎?不是的。既然我們的SESSIONID 不能通過cookie傳遞到各個頁面,那我們還有另一個法寶,就是通過頁面GET傳值的方式。

PHP可以在cookie被禁用時自動通過GET方式跨頁傳遞SESSIONID,前提是設(shè)置php.ini的session.use_trans_sid為1。這時當(dāng)我們在客戶端禁用了cookie時使用了session,并在當(dāng)前頁面通過點擊鏈接到另一頁面時,PHP會自動在鏈接上添加SESSIONID參數(shù),像這樣:nextpage.php?SESSIONID=2bd170b3f86523f1b1b60b55ffde0f66。我想你應(yīng)該看到了這種方式的缺點:好像不夠安全啊。

以上是了解php中session垃圾回收機制的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

CentOS上Postman集成應(yīng)用 CentOS上Postman集成應(yīng)用 May 19, 2025 pm 08:00 PM

在CentOS上集成Postman應(yīng)用可以通過多種方法來實現(xiàn),以下是詳細(xì)的步驟和建議:通過下載安裝包安裝Postman下載Postman的Linux版本安裝包:訪問Postman官方網(wǎng)站,選擇適用於Linux的版本進(jìn)行下載。解壓安裝包:使用以下命令將安裝包解壓到指定目錄,例如/opt:sudotar-xzfpostman-linux-x64-xx.xx.xx.tar.gz-C/opt請注意將“postman-linux-x64-xx.xx.xx.tar.gz”替換為您實際下載的文件名。創(chuàng)建符號

Linux各目錄及每個目錄的詳細(xì)介紹(轉(zhuǎn)載) Linux各目錄及每個目錄的詳細(xì)介紹(轉(zhuǎn)載) May 22, 2025 pm 07:54 PM

【常見目錄說明】目錄/bin存放二進(jìn)制可執(zhí)行文件(ls,cat,mkdir等),常用命令一般都在這裡。 /etc存放系統(tǒng)管理和配置文件/home存放所有用戶文件的根目錄,是用戶主目錄的基點,比如用戶user的主目錄就是/home/user,可以用~user表示/usr用於存放系統(tǒng)應(yīng)用程序,比較重要的目錄/usr/local?本地系統(tǒng)管理員軟件安裝目錄(安裝系統(tǒng)級的應(yīng)用)。這是最龐大的目錄,要用到的應(yīng)用程序和文件幾乎都在這個目錄。 /usr/x11r6?存放x?window的目錄/usr/bin?眾多

pycharm解釋器在哪裡 解釋器位置查找方法 pycharm解釋器在哪裡 解釋器位置查找方法 May 23, 2025 pm 10:09 PM

在PyCharm中設(shè)置解釋器的位置可以通過以下步驟實現(xiàn):1.打開PyCharm,點擊“File”菜單,選擇“Settings”或“Preferences”。 2.找到並點擊“Project:[你的項目名]”,然後選擇“PythonInterpreter”。 3.點擊“AddInterpreter”,選擇“SystemInterpreter”,瀏覽到Python安裝目錄,選中Python可執(zhí)行文件,點擊“OK”。設(shè)置解釋器時需注意路徑正確性、版本兼容性和虛擬環(huán)境的使用,以確保項目順利運行。

用java編程和其他語言的區(qū)別 Java的跨平臺特性優(yōu)勢分析 用java編程和其他語言的區(qū)別 Java的跨平臺特性優(yōu)勢分析 May 20, 2025 pm 08:21 PM

Java與其他編程語言的主要區(qū)別在於其“一次編寫,到處運行”的跨平臺特性。 1.Java的語法接近C ,但去掉了容易出錯的指針操作,適合大型企業(yè)應(yīng)用。 2.與Python相比,Java在性能和大規(guī)模數(shù)據(jù)處理上更具優(yōu)勢。 Java的跨平臺優(yōu)勢源於Java虛擬機(JVM),它能在不同平臺上運行相同的字節(jié)碼,簡化開發(fā)和部署,但需注意避免使用平臺特定API以保持跨平臺性。

安裝Nginx後配置文件路徑及初始設(shè)置 安裝Nginx後配置文件路徑及初始設(shè)置 May 16, 2025 pm 10:54 PM

了解Nginx的配置文件路徑和初始設(shè)置非常重要,因為它是優(yōu)化和管理Web服務(wù)器的第一步。 1)配置文件路徑通常是/etc/nginx/nginx.conf,使用nginx-t命令可以查找並測試語法。 2)初始設(shè)置包括全局設(shè)置(如user、worker_processes)和HTTP設(shè)置(如include、log_format),這些設(shè)置允許根據(jù)需求進(jìn)行定制和擴展,錯誤配置可能導(dǎo)致性能問題和安全漏洞。

mysql安裝教程 手把手教你mysql安裝配置詳細(xì)步驟 mysql安裝教程 手把手教你mysql安裝配置詳細(xì)步驟 May 23, 2025 am 06:09 AM

MySQL的安裝和配置可以通過以下步驟完成:1.從官方網(wǎng)站下載適合操作系統(tǒng)的安裝包。 2.運行安裝程序,選擇“開發(fā)者默認(rèn)”選項並設(shè)置root用戶密碼。 3.安裝後配置環(huán)境變量,確保MySQL的bin目錄在PATH中。 4.創(chuàng)建用戶時遵循最小權(quán)限原則並設(shè)置強密碼。 5.優(yōu)化性能時調(diào)整innodb_buffer_pool_size和max_connections參數(shù)。 6.定期備份數(shù)據(jù)庫並優(yōu)化查詢語句以提高性能。

Informix與MySQL在Linux上的比較 Informix與MySQL在Linux上的比較 May 29, 2025 pm 11:21 PM

Informix和MySQL均為廣受青睞的關(guān)係型數(shù)據(jù)庫管理系統(tǒng),它們在Linux環(huán)境下均表現(xiàn)優(yōu)異並得到廣泛應(yīng)用。以下是對兩者在Linux平臺上的對比分析:安裝與配置Informix:在Linux上部署Informix需要下載對應(yīng)的安裝文件,隨後依據(jù)官方文檔指引完成安裝及配置流程。 MySQL:MySQL的安裝過程較為簡便,可通過系統(tǒng)的包管理工具(例如apt或yum)輕鬆實現(xiàn)安裝,並且網(wǎng)絡(luò)上有大量的教程和社區(qū)支持可供參考。性能表現(xiàn)Informix:Informix以卓越的性能和

參加VSCode線下技術(shù)交流活動的經(jīng)驗 參加VSCode線下技術(shù)交流活動的經(jīng)驗 May 29, 2025 pm 10:00 PM

參加VSCode線下技術(shù)交流活動的經(jīng)驗非常豐富,主要收穫包括插件開發(fā)的分享、實戰(zhàn)演示和與其他開發(fā)者的交流。 1.插件開發(fā)的分享:了解瞭如何利用VSCode的插件API提升開發(fā)效率,如自動格式化和靜態(tài)分析插件。 2.實戰(zhàn)演示:學(xué)習(xí)瞭如何使用VSCode進(jìn)行遠(yuǎn)程開發(fā),認(rèn)識到其靈活性和擴展性。 3.與開發(fā)者交流:獲取了優(yōu)化VSCode啟動速度的技巧,如減少啟動時加載的插件數(shù)量和管理插件加載順序??傊?,這次活動讓我受益匪淺,強烈推薦對VSCode感興趣的人參加。

See all articles