筆記017 PHP中的 session_set_save_handler() 函數

黄舟
發布: 2023-03-04 09:20:01
原創
1586 人瀏覽過

函數說明

session_set_save_handler 函數用於設定使用者自訂會話儲存。

如果想使用 PHP 內建的會話儲存機制以外的方式, 可以使用本函數。 例如,可以自訂會話儲存函數來將會話資料儲存到資料庫。

用法

bool session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable $destroy , callable $gc [, callable $create_sid ] )簡單的參數進行自訂會話儲存設定:

bool session_set_save_handler ( SessionHandlerInterface $sessionhandler [, bool $register_shutdown = true ] )

一個參數說明

此參數有兩種原型:第兩種原型 -34545000%(PM4.版本可用)為:

sessionhandler

實作了 SessionHandlerInterface 介面的對象,該物件你可以自訂,也可以使用官方提供的 SessionHandler

register_shundown

將函數註冊為編號。

第二種原型為:

open(string $savePath, string $sessionName)

open 回呼函數類似類別的建構函數, 在會話開啟的時候會被呼叫。 這是自動開始會話或透過呼叫 session_start() 手動開始會話 之後第一個被呼叫的回呼函數。 此回呼函數操作成功回傳 true,反之回傳 false。

close()

close 回調函數類似類別的析構函數。 在 write 回調函數呼叫之後呼叫。 當呼叫 session_write_close() 函數之後,也會呼叫 close 回呼函數。 此回呼函數操作成功回傳 true,反之回傳 false。

read(string $sessionId)

如果會話中有數據,read 回呼函數必須傳回將會話資料編碼(序列化)後的字串。 如果會話中沒有數據,read 回呼函數會傳回空字串。

在自動開始會話或透過呼叫 session_start() 函數手動開始會話之後,PHP 內部呼叫 read 回呼函數來取得會話資料。 在呼叫 read 之前,PHP 會呼叫 open 回呼函數。

read 回呼回傳的序列化之後的字串格式必須與 write 回呼函數儲存資料時的格式完全一致。 PHP 會自動反序列化回傳的字串並填入 $_SESSION 超級全域變數。 雖然資料看起來和 serialize() 函數很相似, 但是需要提醒的是,它們是不同的。

write(string $sessionId, string $data)

在會話儲存資料時會呼叫 write 回呼函數。 此回呼函數接收目前會話 ID 以及 $_SESSION 中資料序列化之後的字串作為參數。 序列化會話資料的過程由 PHP 依據 session.serialize_handler 設定值來完成。

序列化後的資料將和會話 ID 關聯在一起進行保存。 當呼叫 read 回呼函數取得資料時,所傳回的資料必須與 傳入 write 回呼函數的資料完全保持一致。

PHP 會在腳本執行完成或呼叫 session_write_close() 函數之後呼叫此回呼函數。 請注意,調用完此回呼函數之後,PHP 內部會呼叫 close 回呼函數。

注意:

PHP 會在輸出流寫入完畢並且關閉之後 才調用 write 回調函數, 所以在 write 回調函數中的調試信息不會輸出到瀏覽器中。 如果需要在 write 回呼函數中使用偵錯輸出, 建議將偵錯輸出寫入到檔案。

destroy($sessionId)

當呼叫 session_destroy() 函數, 或呼叫 session_regenerate_id() 函數並且設定 destroy 參數為 true 時, 會呼叫此回呼函數。此回呼函數操作成功回傳 true,反之回傳 false。

gc($lifetime)

為了清理會話中的舊數據,PHP 會不時的調用垃圾收集回調函數。 呼叫週期由 session.gc_probability 和 session.gc_divisor 參數控制。 傳入至此回呼函數的 lifetime 參數由 session.gc_maxlifetime 設定。 此回呼函數操作成功回傳 true,反之回傳 false。

create_sid()

當需要新的會話 ID 時被呼叫的回呼函數。 回呼函數被呼叫時無傳入參數, 其回傳值應該是一個字串格式的、有效的會話 ID。

回傳值

成功時回傳 true, 或失敗時回傳 false。

 以上就是筆記017 PHP中的 session_set_save_handler() 函數的內容,更多相關內容請關注PHP中文網(m.sbmmt.com)!


相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!