首頁 >後端開發 >php教程 >解析PHP中flock()函數(附程式碼實例)

解析PHP中flock()函數(附程式碼實例)

autoload
autoload原創
2021-04-27 10:44:072822瀏覽

   解析PHP中flock()函數(附程式碼實例)

     在PHP的使用過程中,我們經常需要對檔案進行讀取,但是為了防止其他進程對檔案進行讀取修改,避免衝突的發生,我們必須在檔案讀取取時將檔案鎖定,然後對檔案進行修改,直到完成操作,在這個過程中使用的是flock()函數,本文就帶大家一起了解以下。首次,我們來看一看block()函數的語法:

flock( resource $handle, int $operation, int $wouldblock = ?)
  • #$handle:檔案系統指針,是典型地由fopen() 建立的resource(資源)。

  • $operation:LOCK_SH取得共享鎖定(讀取的程式)。 LOCK_EX 取得獨佔鎖定(寫入的程式。LOCK_UN 釋放鎖定(無論共用或獨佔)。如果不希望flock() 在鎖定時堵塞,則是LOCK_NB(Windows 上還不支援)。

  • $wouldblock:如果鎖定會堵塞的話(EWOULDBLOCK    錯誤碼情況下),可選的第三個參數會被設定為true。(Windows 上不支援) 

  • # 傳回值:成功時傳回 true

################都傳###false###。 #############程式碼實例:############1.使用LOCK_EX#########
<?php
$fp = fopen("exit.txt", "r+");
if (flock($fp, LOCK_EX)) {  // 进行排它型锁定
    ftruncate($fp, 0);      // truncate file
    fwrite($fp, "Write something here");
    fflush($fp);            // flush output before releasing the lock
    flock($fp, LOCK_UN);    // 释放锁定
} else {
    echo "Couldn&#39;t get the lock!";
}
fclose($fp);
?>
exit.text内容:Write something here
# ########2.使用LOCK_NB#########
<?php
$fp = fopen(&#39;exit.txt&#39;, &#39;r+&#39;);

/* Activate the LOCK_NB option on an LOCK_EX operation */
if(!flock($fp, LOCK_EX | LOCK_NB)) {
    echo &#39;Unable to obtain lock&#39;;
    exit(-1);
}

fclose($fp);


?>
######推薦:######《######2021年PHP面試題大匯總(收藏)######》《######php影片教學######》######

以上是解析PHP中flock()函數(附程式碼實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn