久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

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

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

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

      在之前的文章中我們已經(jīng)了解了很多的文件處理相關(guān)知識(shí),比如寫入文件、讀取文件等等操作,其中有一個(gè)東西叫做文件鎖。關(guān)于文件鎖的理解可能會(huì)有些抽象,因?yàn)槲募i的機(jī)制一般在打開文件的時(shí)候是看不到效果的。

      那文件鎖到底是什么東西?他是用來做什么的?我們?yōu)槭裁匆褂梦募i?我們要怎樣去使用它?帶著這些疑問下面就讓我們來看一下文件鎖的相關(guān)知識(shí)吧。

      什么是文件鎖?

      首先的一個(gè)問題,簡(jiǎn)單來說,文件鎖就是一種文件保護(hù)機(jī)制,可以理解為當(dāng)你在讀取或者寫入這個(gè)文件的時(shí)候,也就是已經(jīng)有一位在進(jìn)行對(duì)該文件進(jìn)行操作的時(shí)候,文件的一種保護(hù)機(jī)制,為例避免在文件被操作期間被另一個(gè)進(jìn)行操作。

      文件鎖的用途

      一個(gè)文件有文件鎖的話,當(dāng)我在使用這個(gè)文件的時(shí)候,只有我能夠?qū)υ撐募M(jìn)行操作,除非將這個(gè)文件鎖進(jìn)行釋放,否則別人就沒法插手我對(duì)該文件的操作。同一時(shí)段只能夠允許一人進(jìn)行操作,防止數(shù)據(jù)錯(cuò)誤。

      若是沒有文件鎖,出現(xiàn)多個(gè)人員操作同一個(gè)文件,極有可能會(huì)造成數(shù)據(jù)的錯(cuò)誤或者不對(duì)等,因此使用文件鎖是必要的。這就是文件所得用途以及為什么要使用文件鎖。

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

      接下來我們看一下怎樣去使用這個(gè)PHP文件鎖,首先我們需要知道,我們?cè)诖蜷_文件后可以通過flock()函數(shù)來對(duì)文件進(jìn)行上鎖。

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

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

      其中需要注意的是:

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

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

      • LOCK_EX表示的是寫鎖,也就是在寫入的時(shí)候是寫鎖狀態(tài),其他人不能寫也沒法讀,只有等解鎖后才能恢復(fù)。

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

      • LOCK_UN表示的是解除上面兩種狀態(tài)。也就是解鎖。

      • LOCK_NB表示的是在讀取或?qū)懭氲臅r(shí)后,當(dāng)文件鎖住了,就會(huì)馬上返回通知訪問的文件被鎖了。

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

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

      輸出結(jié)果:

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

      test.txt內(nèi)被寫入了數(shù)據(jù):

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

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

      當(dāng)我們使用flock()函數(shù),就是對(duì)文件進(jìn)行了加鎖,想要讓文件自動(dòng)解鎖,只需要調(diào)用fclose()函數(shù)就可以了。在我們寫代碼的時(shí)候在使用文件鎖之后還是加上解鎖語句為好。

      大家如果感興趣的話,可以點(diǎn)擊《PHP視頻教程》進(jìn)行

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)