PHP | flock 函數
怎樣在寫入文件時鎖定文件
最近更新時間 2021-01-05 17:15:17
flock 函數鎖定或釋放文件。
flock() 函數可用於在寫入文件前鎖定文件或者釋放加鎖的文件。fclose() 函數會自動釋放文件鎖。函數操作成功時返回 true,失敗時返回 false。
函數定義
flock ( resource $handle , int $operation , int &$wouldblock = ? ) : bool
// 源文件位於:ext/standard/file.c
# 函數定義
PHP_FUNCTION(flock)
{
...
php_flock_common(stream, operation, 2, wouldblock, return_value);
}
# define LOCK_SH 1
# define LOCK_EX 2
# define LOCK_NB 4
# define LOCK_UN 8
參數
- checkhandle - 文件指針。
- checkoperation - 操作類型,可進行異或運算。
- LOCK_SH 取得共享鎖定(讀取時)。
- LOCK_EX 取得獨佔鎖定(寫入時)。
- LOCK_UN 釋放鎖定。
- LOCK_NB 鎖定時不堵塞(Windows不支持)。
返回值
- checkstring - 操作成功時返回 true,失敗時返回 false。
示例1: - 使用 flock() 函數鎖定文件後寫入數據。
<?php
/**
* PHP flock() 函數鎖定文件後寫入數據。
*
* @since Version 1.0.0
* @filesource
*/
// 打開文件
$fp = fopen('foo.txt', 'r+');
// 鎖定文件
if(flock($fp, LOCK_EX)) {
// 寫入數據
fwrite($fp, "Fooooooo");
// 刷新緩存
fflush($fp);
// 釋放鎖定
flock($fp, LOCK_UN);
}
// 關閉文件
fclose($fp);