文件锁,顾名思义就是对文件上锁。前面我们在介绍《向文件中写入数据》时,同一时刻只有一个单独的用户在操作文件,这样是没有问题的。但是如果两个或者更多用户同时操作同一文件的话,程序就会出现错误。解决这种问题的方法就是,在使用 PHP 向文件中写入时,暂时锁定该文件。
通过学习《file_put_contents() 函数》我们知道,可以通过在 file_put_contents() 函数的第三个参数中设置“LOCK_EX”来为文件加锁。但如果我们使用 fopen()、fwrite()、fclose() 等函数来操作文件的话,就需要在打开文件之后使用 flock() 函数来为文件加锁了。
flock() 函数的语法格式如下:
参数说明如下:
提示:使用 flock() 函数不仅可以为文件加锁,好可以解锁文件。
【示例】使用 flock() 函数为文件加锁。
<?php
$file = fopen('./test.txt','w+');
if(flock($file, LOCK_EX|LOCK_NB)){
fwrite($file, '城东书院'.date('Y-m-d H:i:s', time()));
flock($file, LOCK_UN);
}else{
echo "string";
}
fclose($file);
?>
提示:如果使用了 flock() 函数对文件进行了加锁操作,那么当调用 fclose() 函数时,文件会自动解锁,但最好还是在文件写入完成后加上解锁语句。