PHP文件锁
共享锁(LOCK_SH)
什么时候加共享锁?
当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致
当文件获得共享锁时,其他的写操作会堵塞
独占锁(LOCK_EX)
什么时候加独占锁?
当多个写操作同时进行时,如果不加锁,最终的数据可能是混乱的
当文件获得独占锁时,只有文件写操作完成之前,其他的读写操作都会堵塞
文件锁的使用?
#写操作1
<?php
$fp=fopen("data.txt","r+");
if(flock($fp,LOCK_EX)){
$data=fgets($fp);
fwrite($fp,"hello");
sleep(10);
flock($fp,LOCK_UN);
}else{
echo "unable get lock";
}
fclose($fp);
?>
#写操作2
<?php
$fp=fopen("data.txt","r+");
if(flock($fp,LOCK_EX)){
$data=fgets($fp);
fwrite($fp," hi");
sleep(10);
flock($fp,LOCK_UN);
}else{
echo "unable get lock";
}
fclose($fp);
?>
#读操作
<?php
$fp=fopen("data.txt","r+");
if(flock($fp,LOCK_SH)){
echo $data=fgets($fp);
sleep(10);
flock($fp,LOCK_UN);
}else{
echo "unable get lock";
}
fclose($fp);
?>
#读取到的数据为:
hello hi
相关文章
- 如何通过xhprof分析性能
使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i
- LUMEN API Controller 规范
1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo
- PHP文件锁
共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他
- Hello-Risen-程序
首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发
- PHP自定义类示例(Weixin消息解析类)
PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50
随机推荐
- 如何通过xhprof分析性能
使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i
- LUMEN API Controller 规范
1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo
- PHP文件锁
共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他
- Hello-Risen-程序
首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发
- PHP自定义类示例(Weixin消息解析类)
PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50