flock()
是 PHP 中的一個(gè)函數(shù),用于對文件進(jìn)行鎖定
在 PHP 腳本中使用 flock()
函數(shù)時(shí),通常與文件操作相關(guān)。例如,當(dāng)你需要確保同時(shí)只有一個(gè)進(jìn)程可以訪問和修改某個(gè)文件時(shí),可以使用 flock()
函數(shù)來實(shí)現(xiàn)這種鎖定機(jī)制。
flock()
函數(shù)的基本語法如下:
bool flock(resource $handle, int $operation, int &$wouldblock = null): bool
參數(shù)說明:
$handle
: 必需,表示要鎖定的文件句柄。$operation
: 必需,表示要執(zhí)行的鎖定操作??蛇x值包括:
LOCK_SH
: 請求共享鎖定(讀?。?/li>
LOCK_EX
: 請求獨(dú)占鎖定(寫入)。LOCK_UN
: 釋放鎖定。LOCK_NB
: 非阻塞模式,如果無法立即獲得鎖定,則返回 false。$wouldblock
: 可選,表示是否會(huì)被阻塞。如果傳遞了該參數(shù),當(dāng)鎖定操作會(huì)被阻塞時(shí),該變量將被設(shè)置為 true,否則為 false。示例代碼:
<?php
$fp = fopen("test.txt", "w+");
if (flock($fp, LOCK_EX)) { // 獲取獨(dú)占鎖(寫入)
fwrite($fp, "Write something to the file.");
fflush($fp); // 清空緩沖區(qū)
flock($fp, LOCK_UN); // 釋放鎖定
}
fclose($fp);
?>
在上面的示例中,我們首先打開一個(gè)名為 test.txt
的文件,并獲取獨(dú)占鎖(寫入)。然后向文件中寫入內(nèi)容,并清空緩沖區(qū)。最后,我們釋放鎖定并關(guān)閉文件。