[PHP] session_write_close()的作用

簡單地說,當開啓session_start以後,這個session會一直開啓,並且被一個用戶使用。其他用戶開啓session的話要等待第一個session用戶關閉以後纔可以開啓session,這樣就造成了session阻塞。而session_write_close()可以解決這個session阻塞機制。


解決session阻塞問題的辦法:在session操作完成後調用session_write_close()即可避免此問題;
下面是session阻塞案例:
案例一:
使用session過程中,在開啓session後,同一瀏覽器,執行同一程序,不同頁面會被鎖。不同瀏覽器不會出現這種情況。
結合了PHP的Session機制,找到了阻塞的原因。由於PHP的Session信息是寫入文件的,1個客戶端佔有1個session文件。因此,當 session_start被調用的時候,該文件是被鎖住的,而且是以讀寫模式鎖住的(因爲程序中可能要修改session的值),這樣,第2次調用 session_start的時候就被阻塞了。

最簡解決方法:
查了PHP的手冊,發現一個session_write_close函數,作用是Write session data and end session,也就是寫session的數據,同時關閉這個session。因此,我們可以在用完session之後,調用這個函數關閉session 文件即可解除鎖定。一般,session是用來記錄用戶身份信息的,以便PHP進行身份認證,因此完全可以將session的讀寫放在頁面剛開始執行的時 候,在執行完以後,馬上調用session_write_close函數即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章