今天將要分享的知識點是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
是用磁盤文件來實現PHP會話,它有以下幾部分組成:
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中的值寫入到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 session運行機制的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答