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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

哆啦的時光機 2019-04-06 16:56:58
有大量文件需要處理。用一個php進程去操作會很慢。如何在一個進程讀某一個文件的時候,把文件鎖上。不讓其他進程可以再讀而直接跳過,繼續(xù)讀其他的?把正在讀得文件rename,讀完之后再rename回來,效率挺低的。如果實在沒有更好的方法,就只能用這個了。flock,測試了一下,貌似不太好用,試了一下,沒實現(xiàn)文件的非阻塞讀鎖。給不同進程分配不同的文件,不好實現(xiàn)。也沒數(shù)據(jù)庫。就算有。用數(shù)據(jù)庫做鎖,貌似比rename更低效。請問有什么更好的方式可以給文件加讀鎖。因為,只需要讀文件。
查看完整描述

2 回答

?
汪汪一只貓

TA貢獻1898條經(jīng)驗 獲得超8個贊

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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號