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);