php 文件锁处机制

文件锁机制一般在单一打开文件的时候根本看不到效果。这一块的学习有一点点抽象。

大家不要去思考怎么实现的呀?

为什么看不到效果呀?
答:因为电脑的操作太快了,基本上是毫秒级的。所以这个实验其实是看不到效果的。

这一章了解文件锁的基本概念即可,熟悉文件锁函数和锁机制。

文件锁的用途:

若一个人在写入一个文件,另外一个人同时也打个了这个文件进行写入文件。
这情况下,如果遇到一定的碰撞概率的话,不知道到底谁的操作为准。
因此,这个时候我们引入锁机制。
若用户A在写入或者读取这个文件的时候,将文件加上共享所。我可以读,其他人也可以读。
但是,我如果这与的时候。我使用独占锁。这个文件归我了,你们都别动,除非我将文件锁进行释放。

注意:不论加上了文件锁后要注意释放。

我们来看看这个函数:

bool flock ( resource $handle , int $operation)

功能:轻便的咨询文件锁定

我们来看看锁类型:

锁类型说明
LOCK_SH取得共享锁定(读取的程序)
LOCK_EX取得独占锁定(写入的程序
LOCK_UN释放锁定(无论共享或独占)

我们接下来把demo.txt加上一个独占锁,进行写入操作。

<?php

$fp = fopen("demo.txt", "r+");

// 进行排它型锁定
if (flock($fp, LOCK_EX)) { 

   fwrite($fp, "文件这个时候被我独占了哟\n");

  // 释放锁定
   flock($fp, LOCK_UN);    
} else {
   echo "锁失败,可能有人在操作,这个时候不能将文件上锁";
}

fclose($fp);

?>

说明:

1.上例中我为了写入文件,把文件加上了独占锁。

2.如果我操作完成,写入完成后,解除掉了独占锁。

3.如果是在读取文件的时候,大家可加按照同样的处理思路加上共享锁。


继续学习
||
<?php $fp = fopen("demo.txt", "r+"); // 进行排它型锁定 if (flock($fp, LOCK_EX)) { fwrite($fp, "文件这个时候被我独占了哟\n"); // 释放锁定 flock($fp, LOCK_UN); } else { echo "锁失败,可能有人在操作,这个时候不能将文件上锁"; } fclose($fp); ?>
提交重置代码
章节
笔记
提问
课件
反馈
捐赠

php入门教程之一周学会PHP

  • 推荐课程
  • 评论
  • 问答
  • 笔记
  • 课件下载
谢单单

谢单单

a.php执行锁操作。b.php还是可以修改这文件的。。这个锁操作倒底啥用~~

3年前    添加回复 0

回复
吒哪

吒哪

bool flock ( resource $handle , int $operation) 功能:轻便的咨询文件锁定 LOCK_SH 取得共享锁定(读取的程序) LOCK_EX 取得独占锁定(写入的程序 LOCK_UN 释放锁定(无论共享或独占)

2年前 0

黄二铭

黄二铭

LOCK_EX独占资源,LOCK_UN解锁资源

3年前 0

fighting&it'sme

fighting&it'sme

锁类型 说明 LOCK_SH 取得共享锁定(读取的程序) LOCK_EX 取得独占锁定(写入的程序 LOCK_UN 释放锁定(无论共享或独占) 我们接下来把demo.txt加上一个独占锁,进行写入操作。 <?php $fp = fopen("demo.txt", "r+"); // 进行排它型锁定 if (flock($fp, LOCK_EX)) { fwrite($fp, "文件这个时候被我独占了哟\n"); // 释放锁定 flock($fp, LOCK_UN); } else { echo "锁失败,可能有人在操作,这个时候不能将文件上锁"; } fclose($fp); ?> 说明: 1.上例中我为了写入文件,把文件加上了独占锁。 2.如果我操作完成,写入完成后,解除掉了独占锁。 3.如果是在读取文件的时候,大家可加按照同样的处理思路加上共享锁。

4年前 0

fighting&it'sme

fighting&it'sme

文件锁的用途: 若一个人在写入一个文件,另外一个人同时也打个了这个文件进行写入文件。 这情况下,如果遇到一定的碰撞概率的话,不知道到底谁的操作为准。 因此,这个时候我们引入锁机制。 若用户A在写入或者读取这个文件的时候,将文件加上共享所。我可以读,其他人也可以读。 但是,我如果这与的时候。我使用独占锁。这个文件归我了,你们都别动,除非我将文件锁进行释放。 注意:不论加上了文件锁后要注意释放。

4年前 0

阿大

阿大

LOCK_SH 取得共享锁定(读取的程序) LOCK_EX 取得独占锁定(写入的程序 LOCK_UN 释放锁定(无论共享或独占)

4年前 0

课件暂不提供下载,工作人员正在整理中,后期请多关注该课程~