亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

如何理解php session運(yùn)行機(jī)制

來源:清淺 發(fā)布時(shí)間:2019-03-23 16:20:07 閱讀量:1102

php session運(yùn)行機(jī)制就是客戶端將session id傳入到服務(wù)器中,服務(wù)器再根據(jù)session id找到對應(yīng)的文件并將其反序列化得到session值,然后保存的時(shí)候先序列化再寫入

今天將要分享的知識點(diǎn)是PHP中的會話運(yùn)行機(jī)制,對于熟悉PHP的開發(fā)者來說并不陌生,但是對于剛?cè)腴T的來說就不是很理解了。接下來在文章中將為大家詳細(xì)介紹PHP中的session運(yùn)行機(jī)制,具有一定的參考作用,希望對大家有所幫助

【推薦課程:PHP教程

PHP session運(yùn)行機(jī)制含義:

PHP session 運(yùn)行機(jī)制就是客戶端將session id傳遞到服務(wù)器,服務(wù)器根據(jù)session id找到對應(yīng)的文件,讀取的時(shí)候?qū)ξ募?nèi)容進(jìn)行反序列化就得到session的值,保存的時(shí)候先序列化再寫入

PHP session機(jī)制分類

在PHP中session有兩種機(jī)制,分別為默認(rèn)機(jī)制和由用戶自定義session處理機(jī)制。

默認(rèn)機(jī)制

php.ini配置:

1

session.save_handler = files

是用磁盤文件來實(shí)現(xiàn)PHP會話,它有以下幾部分組成:

session_start()

session_start()是session機(jī)制的開始,它具有一定概率開啟垃圾回收。這個(gè)概率是根據(jù)php.ini的配置決定的,因?yàn)樵谟械南到y(tǒng)中session.gc_probability = 0,即概率是0,這時(shí)就不具備垃圾回收

為$_session賦值

添加一個(gè)新值只會維持在內(nèi)存中,當(dāng)腳本執(zhí)行結(jié)束的時(shí)候,把$_session的值寫入到session_id指定的文件夾中,然后關(guān)閉相關(guān)資源。這個(gè)階段有可能執(zhí)行更改session_id的操作,比如銷毀一個(gè)舊的session_id,生成一個(gè)全新的session_id。這一般用在自定義session操作

1

2

3

4

5

if (isset($_COOKIE[session_name()])) {

            setcookie(session_name(),'',time() -42000,'/');//舊session cookie過期

          }

          session_regenerate_id();//這一步會生成新的session_id

         //session_id()返回的是新的值

寫入session操作

在腳本結(jié)束的時(shí)候會執(zhí)行session寫入操作,把$_session中的值寫入到session_id命名的文件中,可能已經(jīng)存在,可能需要創(chuàng)建新的文件。

銷毀session

session發(fā)出去的cookie一般是即時(shí)cookie,保存在內(nèi)存中,當(dāng)瀏覽器關(guān)閉后,才會過期,但是如果只是想退出登錄,而不是關(guān)閉瀏覽器,那么就需要在代碼里銷毀session,方法有很多。

例:

1

2

3

1. setcookie(session_name(),session_id(),time() -8000000,..);//退出登錄前執(zhí)行

2. usset($_SESSION);//這會刪除所有的$_SESSION數(shù)據(jù),刷新后,有COOKIE傳過來,但是沒有數(shù)據(jù)。

3. session_destroy();//這個(gè)作用更徹底,刪除$_SESSION 刪除session文件,和session_id

用戶自定義session處理機(jī)制

php.ini配置

1

session.save_handler = user

用戶自定義處理機(jī)制可分為以下幾部分

session_start()

執(zhí)行open($save_path,$session_name)語句打開session操作句柄

執(zhí)行read($id)從中讀取數(shù)據(jù)

注意:$save_path在此情況下直接返回true

腳本執(zhí)行結(jié)束

執(zhí)行write($id,$sess_data)語句

銷毀session

需要注意如果用戶需要銷毀session則要先執(zhí)行destroy再執(zhí)行第2步

總結(jié):以上就是本篇文章全部內(nèi)容了,希望對大家有所幫助。


標(biāo)簽: PHP
分享:
評論:
你還沒有登錄,請先