站長資訊網
        最全最豐富的資訊網站

        PHP文件處理之文件鎖的疑問解答

        在之前的文章《PHP中怎樣刪除一個目錄(實例詳解)》中詳細的介紹了PHP中刪除目錄的相關知識,其中刪除一個非空的目錄稍微復雜些。本篇文章我們來看一下PHP中文件鎖的相關知識,希望對大家有幫助!

        PHP文件處理之文件鎖的疑問解答

        在之前的文章中我們已經了解了很多的文件處理相關知識,比如寫入文件、讀取文件等等操作,其中有一個東西叫做文件鎖。關于文件鎖的理解可能會有些抽象,因為文件鎖的機制一般在打開文件的時候是看不到效果的。

        那文件鎖到底是什么東西?他是用來做什么的?我們為什么要使用文件鎖?我們要怎樣去使用它?帶著這些疑問下面就讓我們來看一下文件鎖的相關知識吧。

        什么是文件鎖?

        首先的一個問題,簡單來說,文件鎖就是一種文件保護機制,可以理解為當你在讀取或者寫入這個文件的時候,也就是已經有一位在進行對該文件進行操作的時候,文件的一種保護機制,為例避免在文件被操作期間被另一個進行操作。

        文件鎖的用途

        一個文件有文件鎖的話,當我在使用這個文件的時候,只有我能夠對該文件進行操作,除非將這個文件鎖進行釋放,否則別人就沒法插手我對該文件的操作。同一時段只能夠允許一人進行操作,防止數據錯誤。

        若是沒有文件鎖,出現多個人員操作同一個文件,極有可能會造成數據的錯誤或者不對等,因此使用文件鎖是必要的。這就是文件所得用途以及為什么要使用文件鎖。

        怎樣去使用文件鎖:flock()函數

        接下來我們看一下怎樣去使用這個PHP文件鎖,首先我們需要知道,我們在打開文件后可以通過flock()函數來對文件進行上鎖。

        flock()函數的基本語法格式如下:

        flock(resource $handle, int $operation[, int &$wouldblock])

        其中需要注意的是:

        參數$handle表示的是文件系統的指針,也就是通過fopen()創建的文件資源;參數$operation表示的是文件鎖類型;參數$wouldblock是一個可選參數,他表示的是可以將其設置為1或者true,這樣的話文件鎖定時就會堵塞其它進程。

        下面我們來介紹一下參數$operation的類型:

        • LOCK_EX表示的是寫鎖,也就是在寫入的時候是寫鎖狀態,其他人不能寫也沒法讀,只有等解鎖后才能恢復。

        • LOCK_SH表示的是共享鎖,理解為別人只能讀,但是沒法寫。解鎖后回復。

        • LOCK_UN表示的是解除上面兩種狀態。也就是解鎖。

        • LOCK_NB表示的是在讀取或寫入的時后,當文件鎖住了,就會馬上返回通知訪問的文件被鎖了。

        接下來我們通過示例來看一下,示例如下:

        <?php header("Content-Type: text/html;charset=utf-8");    //設置字符編碼 $file = "test.txt"; $handle = fopen($file,'w+'); //打開文件 if(flock($handle, LOCK_EX|LOCK_NB)){  //給文件上鎖     fwrite($handle, '被鎖住了');  //寫入數據     flock($handle, LOCK_UN);  //釋放文件鎖 }else{     echo "鎖失敗了"; } fclose($handle);//關閉文件 readfile($file);//讀取文件內容 ?>

        輸出結果:

        PHP文件處理之文件鎖的疑問解答

        test.txt內被寫入了數據:

        PHP文件處理之文件鎖的疑問解答

        由上述示例我們便完成了對文件進行文件鎖的操作,操作完成后使用fclose()函數來關閉文件;然后通過readfile()函數讀取文件內容。其中需要注意的是:

        當我們使用flock()函數,就是對文件進行了加鎖,想要讓文件自動解鎖,只需要調用fclose()函數就可以了。在我們寫代碼的時候在使用文件鎖之后還是加上解鎖語句為好。

        大家如果感興趣的話,可以點擊《PHP視頻教程》進行

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产精品亚洲精品日韩已方| 亚洲线精品一区二区三区影音先锋| 久久精品视屏| 国产精品无码无需播放器| 日韩专区亚洲精品欧美专区| 99久久国产主播综合精品 | 综合久久精品色| 国产成人精品怡红院在线观看| 国产精品国产亚洲精品看不卡| 热综合一本伊人久久精品| 国产高清在线精品一本大道国产 | 国产亚洲精品AA片在线观看不加载 | 国产区精品一区二区不卡中文| 亚洲精品国自产拍在线观看| 久久国产精品偷99| 国产精品国产三级国产| 国产99视频精品专区| 欧美国产亚洲精品高清不卡| 500av大全导航精品| 国产成人久久精品激情| 老司机午夜精品视频资源| 亚洲日韩精品A∨片无码| 亚洲精品无码99在线观看| 亚洲av无码成人精品区在线播放 | 久久丫精品国产亚洲av| 亚洲国产一成人久久精品| 亚洲欧美日韩国产精品一区二区| 久久青青草原精品国产不卡| 久久精品亚洲福利| 麻豆精品国产自产在线观看一区| 九九久久精品无码专区| 久久精品国产一区二区三区不卡| 精品国产一区二区三区久久蜜臀 | 国产呦小j女精品视频| 久久精品无码免费不卡| 日本精品久久久久影院日本| 午夜精品一区二区三区在线观看| 欧美激情精品久久久久久| 亚洲国产成人乱码精品女人久久久不卡| 欧美人与性动交α欧美精品成人色XXXX视频 | 日本精品卡一卡2卡3卡四卡|