php session運作機制就是客戶端將session id傳入到伺服器中,伺服器再根據session id找到對應的檔案並將其反序列化得到session值,然後儲存的時候先序列化再寫入
今天將要分享的知識點是PHP中的會話運作機制,對於熟悉PHP的開發者來說並不陌生,但是對於剛入門的來說就不是很理解了。接下來在文章中將為大家詳細介紹PHP中的session運行機制,具有一定的參考作用,希望對大家有所幫助
【推薦課程:
PHP教學】
PHP session運作機制意義:PHP session 運作機制就是客戶端將session id傳遞到伺服器,伺服器根據session id找到對應的文件,讀取的時候對文件內容進行反序列化就得到session的值,保存的時候先序列化再寫入
PHP session機制分類在PHP中session有兩種機制,分別為預設機制和由使用者自訂session處理機制。
預設機制php.ini設定:
session.save_handler = files
session_start()
session_start()是session機制的開始,它具有一定機率開啟垃圾回收。這個機率是根據php.ini的配置決定的,因為在有的系統中session.gc_probability = 0,即機率是0,這時就不具備垃圾回收為$_session賦值
新增一個新值只會維持在記憶體中,當腳本執行結束的時候,把$_session的值寫入到session_id指定的資料夾中,然後關閉相關資源。這個階段有可能執行更改session_id的操作,例如銷毀一個舊的session_id,產生一個全新的session_id。這一般用在自訂session運算範例:if (isset($_COOKIE[session_name()])) {
setcookie(session_name(),'',time() -42000,'/');//旧session cookie过期
}
session_regenerate_id();//这一步会生成新的session_id
//session_id()返回的是新的值
##在腳本結束的時候會執行session寫入操作,把$_session中的值寫入到session_id命名的檔案中,可能已經存在,可能需要建立新的檔案。
銷毀session
session發出去的cookie一般是即時cookie,保存在記憶體中,當瀏覽器關閉後,才會過期,但是如果只是想退出登錄,而不是關閉瀏覽器,那麼就需要在程式碼裡銷毀session,方法有很多。 範例:
1. setcookie(session_name(),session_id(),time() -8000000,..);//退出登录前执行 2. usset($_SESSION);//这会删除所有的$_SESSION数据,刷新后,有COOKIE传过来,但是没有数据。 3. session_destroy();//这个作用更彻底,删除$_SESSION 删除session文件,和session_id
#使用者自訂session處理機制
php.ini配置
session.save_handler = user
session_start()
執行open( $save_path,$session_name)語句開啟session操作句柄執行read($id)從中讀取資料
注意:$save_path在此情況下直接傳回true 執行write($id,$sess_data)語句######銷毀session######## #要注意如果使用者需要銷毀session則要先執行destroy再執行第2步################總結:以上就是本篇文章全部內容了,希望對大家有所幫助。 ############php中文網學習專題###:###php session###(包含圖文、影片、案例)#######
以上是如何理解php session運作機制的詳細內容。更多資訊請關注PHP中文網其他相關文章!