亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

PHP Session可能會引起并發(fā)問題

瀏覽:50日期:2022-09-13 15:17:54

在進(jìn)行Web應(yīng)用程序開發(fā)的時(shí)候,人們經(jīng)常會用Session存儲數(shù)據(jù)。但可能有人不知道,在PHP中,Session使用不當(dāng)可能會引起并發(fā)問題。印度醫(yī)療行業(yè)軟件解決方案提供商Plus91 Technologies高級工程師Kishan Gor在個(gè)人博客上對這個(gè)問題進(jìn)行了闡釋。

如果同一個(gè)客戶端并發(fā)發(fā)送多個(gè)請求,而每個(gè)請求都使用了Session,那么PHP Session鎖的存在會導(dǎo)致服務(wù)器串行響應(yīng)這些請求,而不是并行。這是因?yàn)樵谀J(rèn)情況下,PHP使用文件存儲Session數(shù)據(jù)。對于每一個(gè)新的Session,PHP會創(chuàng)建一個(gè)文件,并持續(xù)向其中寫入數(shù)據(jù)。所以,每次調(diào)用session_start()方法,就會打開Session文件,并取得文件的獨(dú)占鎖。這樣,如果服務(wù)器腳本正在處理一個(gè)請求,而客戶端又發(fā)送了一個(gè)同樣需要使用Session的請求,那么后一個(gè)請求會阻塞,直至前一個(gè)請求處理完成釋放了文件上的獨(dú)占鎖。不過,這只限于來自同一個(gè)客戶端的多個(gè)請求,也就是說,來自一個(gè)客戶端的請求并不會阻塞另一個(gè)客戶端的請求。

 如果腳本很短,這通常沒有問題。但如果腳本運(yùn)行時(shí)間比較長,那就可能會產(chǎn)生問題。在現(xiàn)代Web應(yīng)用程序開發(fā)中,有一個(gè)非常常見的情況,就是使用AJAX技術(shù)在同一個(gè)頁面內(nèi)發(fā)送多個(gè)請求獲取數(shù)據(jù)。如果這些請求都需要使用Session,那么第一個(gè)請求到達(dá)服務(wù)器后會取得Session鎖,其它請求就必須等待,所有請求將串行處理,即使它們彼此之間并沒有依賴關(guān)系。這將大大增加頁面的響應(yīng)時(shí)間。

 有一個(gè)方法可以避免這個(gè)問題,就是在使用完Session以后立即調(diào)用session_write_close()方法關(guān)閉Session。這樣Session鎖就會釋放,即使當(dāng)前腳本還在等在處理。需要注意的是,調(diào)用該方法后,當(dāng)前腳本就不能進(jìn)一步操作Session了。

需要特別指出的是,本文所陳述的問題和觀點(diǎn)只適用于使用session_start()方法的PHP默認(rèn)Session管理模式。比如,有用戶就指出,如果將應(yīng)用程序托管在AWS EC2上,并正確配置DynamoDB,Session鎖定問題就不會出現(xiàn)。

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 亚洲国产精久久小蝌蚪 | 亚洲欧美日韩中文综合v日本 | 土耳其毛片| 国产大片91精品免费观看男同 | 国产伦精品一区二区免费 | 国产欧美精品三区 | 亚洲国产精品久久卡一 | 噜噜噜福利视频在线观看 | 国产69精品久久久久777 | 精品午夜寂寞影院在线观看 | 日本老熟妇毛茸茸 | 在线你懂的 | 一级特黄aaa大片在线观看视频 | chinese老头 gay tube | 成人的天堂视频一区二区三区 | 国产黄色视屏 | 日本欧美做爰全免费的视频 | 国产视频在线观看福利 | 青青国产成人久久91网站站 | 国产大片中文字幕在线观看 | 国产一区2区| 精品福利视频在线观看 | 国产99高清一区二区 | 一级做a爱 一区 | 清纯偷拍精品视频在线观看 | 国产精品情侣久久婷婷文字 | 免费人成视网站在线不卡 | 一级黄色大片免费观看 | 国产99久久九九精品免费 | 91女神在线观看 | 欧美亚洲一区二区三区在线 | 国产第一页在线播放 | 中文偷拍视频在线观看 | 欧美成人丝袜一区二区 | 国产精品久久久久9999赢消 | 亚州三级 | 天天综合网天天综合色不卡 | 免费大片免费观看 | 午夜国产在线观看 | 日韩中文字幕免费在线观看 | 久久精品国产69国产精品亚洲 |