国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP編程中的Session阻塞問題與解決方法分析

2024-05-04 23:59:15
字體:
來源:轉載
供稿:網友

本文實例講述了PHP編程中的Session阻塞問題與解決方法。分享給大家供大家參考,具體如下:

使用session過程中,在開啟session后,同一瀏覽器,執行同一程序,不同頁面會被鎖。不同瀏覽器不會出現這種情況。

疑問:是不是session_start導致了阻塞?

于是,我寫了幾個頁面測試了一下,發現是session導致了阻塞,而其他兩種情況不會造成阻塞。

查了下PHP的Bug列表,發現有人提出了這個問題:

Description:
------------
Calling session_start() appears to wait until other scripts have exited

that are using the same session. My guess is the 1st request locks the
session file for exclusive use, and the second request blocks until it
can open it.

PHP官方的回復是:

Thank you for taking the time to write to us, but this is not a bug.This is expected, the session file is locked to avoid corruption.

結合了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函數即可。

 

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 穆棱市| 永年县| 澄江县| 普兰县| 郁南县| 南郑县| 扎兰屯市| 镇江市| 石景山区| 张家川| 兴安县| 宁陕县| 彝良县| 公安县| 延寿县| 天镇县| 依安县| 公主岭市| 大宁县| 杭锦后旗| 师宗县| 建湖县| 锡林浩特市| 永济市| 青海省| 博白县| 德江县| 棋牌| 缙云县| 揭东县| 韶关市| 莲花县| 阿拉善左旗| 元阳县| 龙里县| 苏尼特左旗| 枣强县| 肇源县| 沂源县| 察隅县| 通渭县|