來源:清淺 發(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 |
|
是用磁盤文件來實(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 |
|
寫入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 |
|
用戶自定義session處理機(jī)制
php.ini配置
1 |
|
用戶自定義處理機(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)容了,希望對大家有所幫助。