PHP中有哪些鎖?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
創(chuàng)新互聯(lián)主要企業(yè)基礎(chǔ)官網(wǎng)建設(shè),電商平臺(tái)建設(shè),移動(dòng)手機(jī)平臺(tái),微信小程序開發(fā)等一系列專為中小企業(yè)按需定制產(chǎn)品體系;應(yīng)對(duì)中小企業(yè)在互聯(lián)網(wǎng)運(yùn)營的各種問題,為中小企業(yè)在互聯(lián)網(wǎng)的運(yùn)營中保駕護(hù)航。文件鎖
這類鎖比較常見,例如 mysql, php-fpm 啟動(dòng)之后都會(huì)有一個(gè)pid文件記錄了進(jìn)程id,這個(gè)文件就是文件鎖。
這個(gè)鎖可以防止重復(fù)運(yùn)行一個(gè)進(jìn)程,例如在使用crontab時(shí),限定每一分鐘執(zhí)行一個(gè)任務(wù),但這個(gè)進(jìn)程運(yùn)行時(shí)間可能超過一分鐘,如果不用進(jìn)程鎖解決沖突的話兩個(gè)進(jìn)程一起執(zhí)行就會(huì)有問題。
使用PID文件鎖還有一個(gè)好處,方便進(jìn)程向自己發(fā)停止或者重啟信號(hào)。例如重啟php-fpm的命令為:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
發(fā)送USR2信號(hào)給pid文件記錄的進(jìn)程,信號(hào)屬于進(jìn)程通信,會(huì)另開一個(gè)篇幅。
互斥鎖和讀寫鎖
sync模塊中的Mutex:
Mutex是一個(gè)組合詞,mutual exclusion。用pecl安裝一下sync模塊, pecl install sync。 文檔中的SyncMutex只有兩個(gè)方法,lock 和 unlock。
sync模塊中的讀寫鎖:
SyncReaderWriter的方法類似,readlock, readunlock, writelock, writeunlock成對(duì)出現(xiàn)即可。
sync模塊中的Event:
感覺和golang中的Cond比較像,wait()阻塞,fire()喚醒Event阻塞的一個(gè)進(jìn)程。有一篇好文介紹了Cond, 可以看出Cond就是鎖的一種固定用法,SyncEvent也一樣。php文檔中的例子顯示,fire()方法貌似可以用在web應(yīng)用中。
sync模塊中的信號(hào)量:
SyncSemaphore文檔中顯示,它和Mutex的不同之處,在于Semaphore一次可以被多個(gè)進(jìn)程(或線程)得到,而Mutex一次只能被一個(gè)得到。所以在SyncSemaphore的構(gòu)造函數(shù)中,有一個(gè)參數(shù)指定信號(hào)量可以被多少進(jìn)程得到。
感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)PHP中有哪些鎖大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前題目:PHP中有哪些鎖-創(chuàng)新互聯(lián)
當(dāng)前地址:http://www.rwnh.cn/article26/ehdjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、電子商務(wù)、建站公司、自適應(yīng)網(wǎng)站、全網(wǎng)營銷推廣、做網(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í)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容