查詢

flock()函式—用法及示例

「 對檔案進行排它性鎖定,以確保在同一時間只有一個程序可以訪問該檔案 」


函式名:flock()

適用版本:所有版本

用法:flock() 函式用於對檔案進行排它性鎖定,以確保在同一時間只有一個程序可以訪問該檔案。它可以用於防止多個程序同時對同一檔案進行讀寫操作,避免資料衝突。

語法:bool flock ( resource $handle, int $operation [, int &$wouldblock ] )

引數:

  • $handle:檔案控制代碼,透過 fopen() 或者其他檔案相關函式獲得。
  • $operation:鎖定的操作型別,可以是以下常量之一:
    • LOCK_SH:共享鎖定(讀鎖),其他程序可以讀取該檔案,但不能寫入。
    • LOCK_EX:獨佔鎖定(寫鎖),其他程序既不能讀取也不能寫入該檔案。
    • LOCK_UN:釋放鎖定,解除鎖定狀態。
  • &$wouldblock(可選):傳遞一個變數來接收是否會阻塞鎖定操作,預設為 false。如果設定為 true,則表示鎖定操作會因為其他程序已經鎖定了檔案而被阻塞。

返回值:成功時返回 true,失敗時返回 false。

示例:

$filename = 'example.txt';
$handle = fopen($filename, 'r+');

if (flock($handle, LOCK_EX)) {
    // 獲得獨佔鎖定,可以對檔案進行寫操作
    fwrite($handle, 'Hello, PHP!');
    
    // 解除鎖定
    flock($handle, LOCK_UN);
} else {
    // 鎖定失敗,處理錯誤邏輯
    echo '無法鎖定檔案';
}

fclose($handle);

在上面的示例中,我們開啟了一個檔案並獲取了檔案控制代碼,然後使用 flock() 函式將檔案鎖定為獨佔模式。在鎖定期間,我們可以對檔案進行寫操作。最後,透過呼叫 flock() 函式並傳遞 LOCK_UN 引數來解除鎖定。

請注意,flock() 函式只能用於同一臺伺服器上的程序之間進行檔案鎖定,並且只對在 PHP 指令碼中使用了 flock() 函式進行鎖定的檔案有效。

補充糾錯
上一個函式: floor()函式
下一個函式: floatval()函式
熱門PHP函式
分享連結