久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放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獲取指定目錄中文件(不包含子目錄)的方法,有需要的請(qǐng)看《php怎么知道指定目錄中有哪些文件》。這次我們來(lái)給大家介紹一下文件鎖,看看文件鎖的作用,添加文件鎖和解除文件鎖的方法。

      在之前的文章《php文件操作之如何清空文件重新添加數(shù)據(jù)》中我們介紹了向文件中寫入數(shù)據(jù)的方法,文章中我們是同一時(shí)刻單個(gè)用戶在操作文件,因此沒有問(wèn)題。但如果是在網(wǎng)絡(luò)環(huán)境下,多個(gè)客戶端用戶在同一個(gè)時(shí)刻對(duì)服務(wù)器上的同一個(gè)文件進(jìn)行訪問(wèn)操作,那么程序就會(huì)出現(xiàn)錯(cuò)誤,且很可能會(huì)破壞文件。

      舉個(gè)例子:

      • 有一個(gè)用戶正在向文件中寫入數(shù)據(jù)(數(shù)據(jù)還沒完),此時(shí)又有一個(gè)用戶也向這個(gè)文件中寫入數(shù)據(jù),這樣會(huì)造成數(shù)據(jù)寫入混亂;

      • 或者,在用戶沒有將數(shù)據(jù)寫完的情況下,有其他用戶去獲取這個(gè)文件中的內(nèi)容,那么該用戶獲取的數(shù)據(jù)是不是不完整的,會(huì)得到殘缺的數(shù)據(jù)。

      為了解決這個(gè)問(wèn)題,PHP提供了flock()函數(shù)–文件鎖機(jī)制,可以鎖定或釋放文件。

      在使用PHP向文件中寫入時(shí),暫時(shí)鎖定該文件;只有等到鎖定被釋放以后,其他用戶才能操作該文件。這樣可以避免在并發(fā)訪問(wèn)同一個(gè)文件時(shí)破壞數(shù)據(jù)。

      我們來(lái)看看下面一個(gè)示例:

      <?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, '現(xiàn)在是:'.date('Y-m-d H:i:s', time()));  //寫入數(shù)據(jù)     flock($handle, LOCK_UN);  //釋放文件鎖 }else{     echo "string"; } fclose($handle);//關(guān)閉文件 readfile($file);//讀取文件內(nèi)容 ?>

      分析上面的代碼:

      先使用fopen()函數(shù)打開一個(gè)文件。然后使用flock($handle, LOCK_EX|LOCK_NB)語(yǔ)句給文件加一個(gè)“LOCK_EX”獨(dú)占鎖,且設(shè)置“LOCK_NB”在鎖定的情況下避免阻塞其他進(jìn)程,直接返回else中的內(nèi)容。接著就可以使用fwrite()函數(shù)進(jìn)行寫入操作,寫入當(dāng)前的時(shí)間了。

      文件操作好后,就需要使用fclose()函數(shù)來(lái)關(guān)閉文件;最后使用readfile()函數(shù)讀取文件內(nèi)容。因此輸出結(jié)果為:

      php知道文件鎖嗎?有什么用?

      下面我們來(lái)簡(jiǎn)單了解一下flock()函數(shù)。

      flock($file,$lock,$block)函數(shù)接受了2個(gè)必需參數(shù)$file(需要加鎖/解鎖的打開文件)和$lock(鎖定類型)和一個(gè)可省略的參數(shù)$block(當(dāng)值設(shè)置為1 或 true時(shí),可在文件鎖定時(shí)堵塞其它進(jìn)程)。

      $lock參數(shù)用于設(shè)置文件鎖類型,可以設(shè)置一個(gè)或多個(gè)以下值(多個(gè)值需要使用|來(lái)分隔):

      • LOCK_SH – 共享鎖定(讀取的程序)。允許其他進(jìn)程訪問(wèn)該文件。

      • LOCK_EX – 獨(dú)占鎖定(寫入的程序)。防止其他進(jìn)程訪問(wèn)該文件。

      • LOCK_UN – 釋放一個(gè)共享鎖定或獨(dú)占鎖定

      • LOCK_NB – 鎖定的情況下避免阻塞其他進(jìn)程。

      好了就說(shuō)到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦?!?→PHP文件基礎(chǔ)操作

      推薦:《PHP面試題大匯總(收藏)》《php視頻教程》

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