當前位置:首頁 > IT技術(shù) > Web編程 > 正文

php session 讀寫鎖
2021-09-29 14:51:52

php session 讀寫鎖

  • 想想一個例子,功能:
  1. 點擊頁面中一個按鈕,ajax執(zhí)行php,php中用session記錄執(zhí)行到哪一步。
  2. 使用ajax輪詢另一個php,獲取session中數(shù)據(jù),輸出執(zhí)行到哪一步。

?

  • 執(zhí)行時發(fā)現(xiàn),輪詢的結(jié)果: 并不是每一步返回,而是等待10秒后直接返回complete。

當執(zhí)行session_start()后,session會被鎖住。直到頁面執(zhí)行完成。

因此在頁面執(zhí)行其間,對sesssion進行寫操作,只會保存在內(nèi)存中,并不會寫入session文件。

而對session進行讀取,則需要等待,直到session鎖解開才能讀取到。

?

  • 解決方法

我們可以使用session_write_close()把數(shù)據(jù)寫入session文件并結(jié)束session進程。這樣就不需要等待頁面執(zhí)行完成,也能獲取到執(zhí)行到哪一步。

但這樣有個問題,就是執(zhí)行完sesssion_write_close()后,對session的任何寫操作都不起作用。因為session進程已經(jīng)結(jié)束。

因此需要再寫session時,在前面加上session_start()

?

  • 備注:
  • session_start?— Start new or resume existing session?

    ?

  • session_write_close?— Write session data and end session?

?

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務(wù)立即開通 >