PHP Conference Japan 2024

SessionHandlerInterface::write

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

SessionHandlerInterface::write寫入工作階段資料

說明

public SessionHandlerInterface::write(字串 $id, 字串 $data): 布林值

將階段工作期資料寫入階段工作期儲存區。當 session_register_shutdown() 失敗,或在正常關閉期間,由 session_write_close() 呼叫。注意:SessionHandlerInterface::close() 會在此函式之後立即被呼叫。

當階段工作期準備好儲存和關閉時,PHP 將呼叫此方法。它將來自 $_SESSION 超全域變數的階段工作期資料編碼為序列化字串,並將其連同階段工作期 ID 傳遞給此方法以進行儲存。使用的序列化方法在 session.serialize_handler 設定中指定。

請注意,此方法通常在輸出緩衝區關閉後由 PHP 呼叫,除非由 session_write_close() 明確呼叫。

參數

id

階段工作期 ID。

data

已編碼的階段工作期資料。此資料是 PHP 內部將 $_SESSION 超全域變數編碼為序列化字串並將其作為此參數傳遞的結果。請注意,階段工作期使用替代的序列化方法。

返回值

返回值(通常成功時為 true,失敗時為 false)。請注意,此值會在內部返回給 PHP 進行處理。

另請參閱

新增註解

使用者貢獻的註解 3 則註解

jotremb at hotmail dot com
7 年前
需要注意的是,如果從此方法返回 FALSE,PHP 將會輸出以下警告:

警告:未知:無法寫入階段工作期資料 (user)。請確認 session.save_path 的目前設定是否正確 (/var/lib/php/session) in Unknown on line 0.

這可能會造成一些小問題,但是如果根據設計不應該寫入階段工作期,那麼在處理(而不是寫入)階段工作期後返回 TRUE 將避免進一步的問題。

總而言之,除了硬體錯誤的情況外,最好始終返回 TRUE。
barkoczi dot roland at aercode dot com
9 年前
注意:如果 $session_data 未更改,則不會呼叫此函式。為了在每次階段工作期即將關閉時都呼叫此函式,請新增 $_SESSION["timestamp"] = time();
Aeric Poon
5 年前
警告:session_write_close():階段工作期回呼需要 true/false 返回值,位於 Unknown on line 0

我在 write() 中返回了 TRUE,但警告仍然存在。然後我也在 close() 中返回了 TRUE,警告就消失了。
To Top