php 文件锁

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/1/6
 * Time: 11:30
 */

class FileLock{

    //文件锁存放路径
    private $path='';

    //文件句柄
    private $fp='';

    //锁文件
    private $lockFile='';

    /**
     * 构造函数
     * @param string $path 锁的存放目录
     * @param string $name 锁 KEY
     */
    public function __construct($name,$path=''){
        if(empty($path)) $this->path=RUNTIME_PATH;
        else $this->path=$path;
        $this->lockFile=$this->path.md5($name).'.lock';
    }

    /**
     * 加锁
     */
    public function lock(){
        $this->fp=fopen($this->lockFile,'a+');
        if($this->fp===false){
            return false;
        }
        return flock($this->fp,LOCK_EX);//获取独占锁
    }

    /**
     * 解锁
     */
    public function unlock(){
        if($this->fp!==false){
            @flock($this->fp,LOCK_UN);
            clearstatcache();
        }
        @fclose($this->fp);
        @unlink($this->lockFile);
    }
}

posted on   何苦->  阅读(121)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示