天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP中Session引起的腳本阻塞問(wèn)題解決辦法


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


案例一:

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

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

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

   查了下php的Bug列表,發(fā)現(xiàn)有人提出了這個(gè)問(wè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機(jī)制,找到了阻塞的原因。由于php的Session信息是寫(xiě)入文件的,1個(gè)客戶(hù)端占有1個(gè)session文件。因此,當(dāng) session_start被調(diào)用的時(shí)候,該文件是被鎖住的,而且是以讀寫(xiě)模式鎖住的(因?yàn)槌绦蛑锌赡芤薷膕ession的值),這樣,第2次調(diào)用 session_start的時(shí)候就被阻塞了。

    最簡(jiǎn)解決方法:

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


案例二:

上回說(shuō)要改opencart其實(shí)是給opencart加一個(gè)抓取淘寶上的產(chǎn)品的功能,但是弄完后發(fā)現(xiàn)一個(gè)問(wèn)題,就是當(dāng)腳本在抓取的時(shí)候,因?yàn)檫@個(gè)過(guò)程比較慢,這個(gè)時(shí)候其他所有腳本的執(zhí)行都被阻塞了,直到抓取完其他腳本才能依次執(zhí)行。研究了半天沒(méi)有結(jié)果,在知乎上問(wèn)了下可能是session的問(wèn)題,需要調(diào)用session_write_close()來(lái)解決,那么這個(gè)session_write_close()是干嘛用的呢,手冊(cè)上這樣寫(xiě)的:
復(fù)制代碼 代碼如下:
結(jié)束當(dāng)前session,保存session數(shù)據(jù)。

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

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

 

php技術(shù)PHP中Session引起的腳本阻塞問(wèn)題解決辦法,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 巨胸美乳中文在线观看 | 国产一区内射最近更新 | 97在线精品视频免费 | 久久99热这里只有精品66 | 国产亚洲福利精品一区 | 我年轻漂亮的继坶2中字在线播放 | 成年美女黄网站色app | 无码专区无码专区视频网网址 | 国产午夜理论片YY8840Y | 日韩 国产 中文 无码 | 和姐姐做插得很深 | 97成人免费视频 | 亚州精品视频 | 国产精品99久久久精品无码 | 99午夜高清在线视频在观看 | 俄罗斯aaaaa一级毛片 | 免费观看的毛片 | 国产亚洲精品久久播放 | 97成人碰碰在线人妻少妇 | 久久国语精品 | 亚洲.日韩.欧美另类 | www.av日韩| 久久日本精品在线热 | 国产精品99久久久久久人韩国 | 暖暖视频中国在线观看免费韩国 | 伊人成色综合人网 | 国产亚洲精品精品精品 | 2019久久这里只精品热在线观看 | 花蝴蝶在线观看免费中文版高清 | 国产一区亚洲 | 国产日韩精品一区二区三区在线 | 嫩草影院未满十八岁禁止入内 | 全免费A敌肛交毛片免费懂色AV | 亚洲电影不卡 | 麻豆天美国产一区在线播放 | 野草在线视频完整视频 | 99视频这里只有精品国产 | 亚洲不卡一卡2卡三卡4卡5卡 | 精品视频一区二区三三区四区 | 中文无码熟妇人妻AV在线 | 男人吃奶摸下挵进去啪啪 |