文件锁的玩法
来源:互联网 发布:阿里云logo设计理念 编辑:程序博客网 时间:2024/04/29 02:23
- 群里大家一起交流: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
- 文件锁的玩法
- 杀人游戏的玩法
- JavaScript的另类玩法
- PRE_PAGE_SGA 的玩法
- pcie dma的玩法
- PRE_PAGE_SGA 的玩法[转]
- 掌控时间的玩法!!!
- session 登陆的玩法
- 政治的玩法
- Dplus的玩法
- git的简单玩法
- 国际象棋的玩法
- 国际象棋的玩法
- Salesforce 的Cache玩法
- 掼蛋的玩法
- 斗鱼大数据的玩法
- PHP异步的玩法
- 斗鱼大数据的玩法
- zb的生日
- HDOJ 2122 Ice_cream’s world III(最小生成树--prime 水)
- ZigBee -----对ZDO的初步理解
- Highmaps网页图表教程之Highmaps第一个实例与图表构成
- iOS 8 CloudKit上手教程
- 文件锁的玩法
- 递归:汉罗塔问题的程序实现
- Block 传值
- JDOM的例子
- vs2008、vs2010中查看变量在内存中的内容的方法
- 全球第一款支持NVMe标准全闪存阵列BlazeArray产品原型亮相FMS2015
- java图片处理工具之-ImageMagick+jmagick(二)
- 简单计算器(hdu 1237)
- quatz 配置 spring注入失效问题解决办法