内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

如何解決PHP中Session引起的腳本阻塞問題-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“如何解決PHP中Session引起的腳本阻塞問題”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

10年積累的網(wǎng)站設(shè)計、網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有樂亭免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

解決session阻塞問題的辦法:在session操作完成后調(diào)用session_write_close()即可避免此問題;


案例一:

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

  疑問:是不是session_start導(dǎo)致了阻塞?

   于是,我寫了幾個頁面測試了一下,發(fā)現(xiàn)是session導(dǎo)致了阻塞,而其他兩種情況不會造成阻塞。

   查了下PHP的Bug列表,發(fā)現(xiàn)有人提出了這個問題:


復(fù)制代碼 代碼如下:

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官方的回復(fù)是:


復(fù)制代碼 代碼如下:

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.

    結(jié)合了PHP的Session機制,找到了阻塞的原因。由于PHP的Session信息是寫入文件的,1個客戶端占有1個session文件。因此,當(dāng) session_start被調(diào)用的時候,該文件是被鎖住的,而且是以讀寫模式鎖住的(因為程序中可能要修改session的值),這樣,第2次調(diào)用 session_start的時候就被阻塞了。

    最簡解決方法:

    查了PHP的手冊,發(fā)現(xiàn)一個session_write_close函數(shù),作用是Write session data and end session,也就是寫session的數(shù)據(jù),同時關(guān)閉這個session。因此,我們可以在用完session之后,調(diào)用這個函數(shù)關(guān)閉session 文件即可解除鎖定。一般,session是用來記錄用戶身份信息的,以便PHP進行身份認(rèn)證,因此完全可以將session的讀寫放在頁面剛開始執(zhí)行的時 候,在執(zhí)行完以后,馬上調(diào)用session_write_close函數(shù)即可。


案例二:

上回說要改opencart其實是給opencart加一個抓取淘寶上的產(chǎn)品的功能,但是弄完后發(fā)現(xiàn)一個問題,就是當(dāng)腳本在抓取的時候,因為這個過程比較慢,這個時候其他所有腳本的執(zhí)行都被阻塞了,直到抓取完其他腳本才能依次執(zhí)行。研究了半天沒有結(jié)果,在知乎上問了下可能是session的問題,需要調(diào)用session_write_close()來解決,那么這個session_write_close()是干嘛用的呢,手冊上這樣寫的:


復(fù)制代碼 代碼如下:

結(jié)束當(dāng)前session,保存session數(shù)據(jù)。

session數(shù)據(jù)通常會在腳本執(zhí)行結(jié)束后被保存而并不需要調(diào)用session_write_close(),但是為保護session在任何時候都只能被一個腳本執(zhí)行寫操作,session的數(shù)據(jù)會被鎖住。當(dāng)同時使用框架網(wǎng)頁和session時你會發(fā)現(xiàn),框架里的網(wǎng)頁會因為這個個鎖定而逐個載入。你可以通過在所有的session數(shù)據(jù)修改保存結(jié)束后馬上結(jié)束session來加快載入時間。

這就很好的解釋了為什么我的抓取腳本會阻塞其他頁面的原因。所以,如果你有一個需要執(zhí)行時間比較長并用到session的ajax請求的話,就需要在服務(wù)器端調(diào)用session_write_close(),不然你的其他頁面就都會被掛起直到請求結(jié)束!??!

“如何解決PHP中Session引起的腳本阻塞問題”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

當(dāng)前文章:如何解決PHP中Session引起的腳本阻塞問題-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://www.rwnh.cn/article20/essco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航外貿(mào)建站、網(wǎng)站維護、小程序開發(fā)、做網(wǎng)站定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
徐州市| 宝丰县| 毕节市| 伊金霍洛旗| 东源县| 娄底市| 鸡泽县| 奉新县| 贵州省| 侯马市| 紫云| 仲巴县| 微山县| 重庆市| 万州区| 庐江县| 奉新县| 阿合奇县| 普安县| 灵璧县| 新河县| 梓潼县| 秦皇岛市| 朝阳县| 木兰县| 淅川县| 浮梁县| 桐乡市| 班戈县| 彭山县| 昌吉市| 木里| 九江市| 尼木县| 昭平县| 青阳县| 卫辉市| 隆林| 恩施市| 福安市| 宜良县|