PHP flock 文件锁处理并发

利用 PHP flock 文件锁处理并发

利用flock()函数对文件进行加锁(排它锁),实现并发按序进行。

flock(file,lock,block)有三个参数。

file 必需。规定要锁定或释放的已打开的文件。
lock 必需。规定要使用哪种锁定类型。可能的值:
  • LOCK_SH - 共享锁定(读取的程序)。允许其他进程访问该文件。
  • LOCK_EX - 独占锁定(写入的程序)。防止其他进程访问该文件。
  • LOCK_UN - 释放一个共享锁定或独占锁定
  • LOCK_NB - 锁定的情况下避免阻塞其他进程。
block 可选。若设置为 1,则当进行锁定时阻塞其他进程。

阻塞模式(后面的进程会一直等待前面的进程执行完毕)

 
    $file = fopen(__DIR__.'/lock.txt','w+');
    //加锁
    if(flock($file,LOCK_EX)){
        //TODO 执行业务代码
        flock($file,LOCK_UN);//解锁
    }
    //关闭文件
    fclose($file);

非阻塞模式(只要当前文件有锁存在,那么直接返回)

   $file = fopen(__DIR__.'/lock.txt','w+');
    //加锁
    if(flock($file,LOCK_EX|LOCK_NB)){
        //获得锁成功,执行业务代码
        flock($file,LOCK_UN);//解锁
    }else{
        //获得锁失败返回系统繁忙等错误提示
    }
    //关闭文件
    fclose($file);

 

给TA支持
共{{data.count}}人
人已支持
php工作日志thinkphp

PHP7.2以上版本PHPEXCEL无法导出问题

2021-1-11 14:54:16

随笔

CSS屏蔽UC浏览器广告

2021-2-23 10:42:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索