第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

PHP 讀文件怎么實(shí)現(xiàn)加鎖

PHP 讀文件怎么實(shí)現(xiàn)加鎖

有大量文件需要處理。用一個(gè)php進(jìn)程去操作會(huì)很慢。如何在一個(gè)進(jìn)程讀某一個(gè)文件的時(shí)候,把文件鎖上。不讓其他進(jìn)程可以再讀而直接跳過(guò),繼續(xù)讀其他的?把正在讀得文件rename,讀完之后再rename回來(lái),效率挺低的。如果實(shí)在沒(méi)有更好的方法,就只能用這個(gè)了。flock,測(cè)試了一下,貌似不太好用,試了一下,沒(méi)實(shí)現(xiàn)文件的非阻塞讀鎖。給不同進(jìn)程分配不同的文件,不好實(shí)現(xiàn)。也沒(méi)數(shù)據(jù)庫(kù)。就算有。用數(shù)據(jù)庫(kù)做鎖,貌似比rename更低效。請(qǐng)問(wèn)有什么更好的方式可以給文件加讀鎖。因?yàn)椋恍枰x文件。
查看完整描述

2 回答

?
萬(wàn)千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊

你的問(wèn)題是:
1.很多文件,想多進(jìn)程處理,以提高效率,縮短總處理時(shí)間
2.這些進(jìn)程只需要讀文件,不需要寫(xiě)
3.對(duì)每個(gè)文件,只要有一個(gè)進(jìn)程處理過(guò)它就可以了,沒(méi)有多個(gè)進(jìn)程都必須處理它的需求你的需求其實(shí)是分治,將文件分為多個(gè)組(不一定要在文件系統(tǒng)上新建目錄),然后分而治之,這種情況不需要用鎖.鎖不是用于這種場(chǎng)景的,鎖用于下面這種場(chǎng)景:1.文件file.txt里面記錄了user1的銷(xiāo)售額和user2的銷(xiāo)售額,user1+user2的銷(xiāo)售總額
2.進(jìn)程php1負(fù)責(zé)寫(xiě)入user1的數(shù)據(jù),進(jìn)程php2負(fù)責(zé)寫(xiě)入user2的數(shù)據(jù),兩個(gè)進(jìn)程各讀出銷(xiāo)售總額顯示給user1,user2
3.user1和user2同時(shí)要求寫(xiě)入,真的是同時(shí),不是前后差個(gè)幾秒什么的建議你這樣解決:
1.啟動(dòng)多個(gè)PHP進(jìn)程(nohupphpyour_script.phpyour_dir&)
2.每個(gè)PHP進(jìn)程賦予一個(gè)序號(hào)(假設(shè)4個(gè)進(jìn)程,那就0,1,2,3),可以通過(guò)對(duì)進(jìn)程自身的pid模運(yùn)算取余數(shù)得到,也可以在啟動(dòng)進(jìn)程的時(shí)候通過(guò)命令行傳入,隨你了
3.每個(gè)進(jìn)程在處理文件前先對(duì)文件名做crc32()運(yùn)算,模一下進(jìn)程總數(shù):crc32(file_name)%4,取模結(jié)果與此進(jìn)程的序號(hào)相等就讀取內(nèi)容并處理,不相等就跳過(guò)最后:小編幫我排個(gè)版吧...
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-06
  • 2 回答
  • 0 關(guān)注
  • 321 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)