在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't get the lock!"; } fclose($fp); ?>
exit.text内容:Write something here# ########2.使用LOCK_NB#########
<?php $fp = fopen('exit.txt', 'r+'); /* Activate the LOCK_NB option on an LOCK_EX operation */ if(!flock($fp, LOCK_EX | LOCK_NB)) { echo 'Unable to obtain lock'; exit(-1); } fclose($fp); ?>######推薦:######《######2021年PHP面試題大匯總(收藏)######》《######php影片教學######》######
以上是解析PHP中flock()函數(附程式碼實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!