如何在php中使用session鎖防止阻塞請(qǐng)求-創(chuàng)新互聯(lián)

如何在php中使用session鎖防止阻塞請(qǐng)求?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到碭山網(wǎng)站設(shè)計(jì)與碭山網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋碭山地區(qū)。

問(wèn)題:

php的session缺省用文件存儲(chǔ),當(dāng)請(qǐng)求一個(gè)需要操作session的php文件(session_start())時(shí),這個(gè)文件是會(huì)被第一個(gè)操作session的進(jìn)程鎖定,導(dǎo)致其他請(qǐng)求阻塞。其他請(qǐng)求會(huì)掛起在session_start()直到session文件解鎖。

解決:

由于鎖定的session文件直到腳本執(zhí)行結(jié)束或者session正常關(guān)閉才會(huì)解鎖,為了防止大量的php請(qǐng)求(需要使用$_SESSION數(shù)據(jù))被鎖定,可以在寫(xiě)完session后馬上關(guān)閉,這樣就釋放了鎖。

關(guān)閉session:

session_write_close();

這個(gè)技巧非常管用,尤其對(duì)于一個(gè)處理時(shí)間長(zhǎng)的腳本。并且這個(gè)函數(shù)只是關(guān)閉了寫(xiě)session,讀還是可以的。

// 
session_start();
//可以讀寫(xiě)session
$_SESSION['latestRequestTime'] = time();
//關(guān)閉session
session_write_close();
//讀取session
$twitterId = $_SESSION['twitterId'];

譯注:

在php5.4以后,session_set_save_handler 支持了傳遞SessionHandlerInterface 的方式,第二個(gè)參數(shù)就是指定session_write_close() 作為回調(diào)方法的(缺省就是true),將函數(shù)session_write_close() 注冊(cè)為register_shutdown_function() 函數(shù)。


用Memcache或者Redis做session的存儲(chǔ),是能解決“鎖定”的問(wèn)題,但處理不好會(huì)導(dǎo)致連接數(shù)標(biāo)高(在session操作后如果有耗時(shí)操作,連接是不回收的,可以主動(dòng)在session寫(xiě)操作完成后做session_write_close() 操作)

關(guān)于如何在php中使用session鎖防止阻塞請(qǐng)求問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

當(dāng)前題目:如何在php中使用session鎖防止阻塞請(qǐng)求-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://muchs.cn/article44/dppche.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站網(wǎng)站排名、網(wǎng)站改版服務(wù)器托管、品牌網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站

廣告

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

網(wǎng)站優(yōu)化排名