博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件锁的玩法
阅读量:6379 次
发布时间:2019-06-23

本文共 1113 字,大约阅读时间需要 3 分钟。

  • 群里大家一起交流:410028331 

文件锁的玩法

1、普通两个文件同一时候往一个文件里写入内容效果

index-1.php

<?php

$file = 'temp.txt';
$fp = fopen($file,'a');
 
for($i = 0;$i <10;$i++)
{
fwrite($fp, "11111111<br />");
sleep(1);
}
 
fclose($fp); 

?

>

index-2.php

<?php

$file = 'temp.txt';
$fp = fopen($file,'a'); 
 
for($i = 0;$i <10;$i++)
{
fwrite($fp, "22222222<br />");
fclose($fp); 

?>

当同一时候运行后,(先1后2   要快立即运行两个)

进入temp.txt  会看到     11111111<br />11111111<br />22222222<br />22222222<br />22222222<br />22222222<br />22222222<br />11111111<br />11111111<br />11111111<br />

是混乱的。那么实际实现功能上就会出现故障。

?????????

那么这样的情况下。怎样实现并发对一个文件写入,而先来先写排序写入呢?

那么用到文件锁,这是一个非常好地选择

index-1.php改为

<?

php

$file = 'temp.txt';
$fp = fopen($file,'a');
if(flock($fp,LOCK_EX))
{
for($i = 0;$i <10;$i++)
{
fwrite($fp, "11111111<br />");
sleep(1);
}
flock($fp,LOCK_UN);
}
fclose($fp); 

index-2.php改为:

<?php

$file = 'temp.txt';
$fp = fopen($file,'a');
if(flock($fp,LOCK_EX))
{
for($i = 0;$i <10;$i++)
{
fwrite($fp, "22222222<br />");
}
flock($fp,LOCK_UN);
}
fclose($fp); 

再去运行发现temp.txt中的结果是这种(先1立即2,由于1有sleep会运行一段时间,仅仅要能保证1未完就运行了2就可以)  

结果:   11111111<br />11111111<br /> ...   22222222<br />...

也就是1运行完了后运行的2

转载地址:http://fdqqa.baihongyu.com/

你可能感兴趣的文章
客户端在使用citrix应用如何开启本地输入法
查看>>
C# 一个字符串是否在另外一个字符串数组里 Array.Exists 的用法 Array.IndexOf 用法...
查看>>
delphi实现计算器
查看>>
CentOS7 网卡命名
查看>>
如何在Hudson上集成sonar来实现代码质量控制
查看>>
Django进阶之缓存和信号
查看>>
DataGridView 设定单元格只读:
查看>>
缺陷跟踪工具jira和团队协作与项目管理工具conflunce
查看>>
shell特性及变量设置
查看>>
RHEL6入门系列之十五,管理用户和组
查看>>
特斯拉悄悄搞出无人车AI芯片,已经投产测试,而且没带英伟达
查看>>
LVS、Nginx和HAProxy负载均衡器对比总结
查看>>
Samsung_tiny4412(驱动笔记01)----linux 3.5,U-Boot,Busybox,SD卡启动环境搭建
查看>>
爬虫攻略(一)
查看>>
正则表达式语法
查看>>
零元学Expression Blend 4 - Chapter 45 ListBox里的物件不能换行吗?
查看>>
Elasticsearch上手——几个基本概念
查看>>
WebView.简单使用_资料
查看>>
CAN协议栈总体架构
查看>>
python下正则表达式的随笔记录
查看>>