筆記017 PHP中的 session_set_save_handler() 函數

來源:互聯網
上載者:User

函數說明

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 ] )

從 PHP 5.4 版本開始,可以直接使用更簡單的參數進行自訂會話儲存設定:

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

參數說明

該參數有兩種原型:

第一種原型(PHP 5.4+ 版本可用)為:

sessionhandler

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

register_shundown

將函數 session_write_close() 註冊為 register_shutdown_function() 函數。

第二種原型為:

open(string $savePath, string $sessionName)

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

close()

close 回呼函數類似於類的解構函式。 在 write 回呼函數調用之後調用。 當調用 session_write_close() 函數之後,也會調用 close 回呼函數。 此回呼函數操作成功返回 true,反之返回 false。

read(string $sessionId)

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

在自動開始會話或者通過調用 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() 函數的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.