php文件锁阻塞模式和非阻塞模式


1、阻塞模式(如果其它进程已经加锁文件,当前进程会等其它进程解锁后继续执行)

<?php

$handle = fopen('lock.txt', 'r');

//锁定

if(flock($handle,LOCK_EX)){

      //to do something

     //解锁

    flock($handle, LOCK_UN);

}

//关闭文件

fclose($handle);

?>

2、非阻塞模式(如果其它进程已经加锁文件,当前进程会执行else里面的内容,不会等待文件解锁)

<?php

$handle = fopen('lock.txt', 'r');

if(flock($handle, LOCK_EX | LOCK_NB)){

     //do something

}else{

    // 提示系统繁忙

}

flock($handle, LOCK_UN);

fcolse($handle);

?>

注:windows不支持LOCK_NB类型锁定文件,所以,非阻塞模式不能在windows下做验证(笔者就遇到这个坑,一直不能执行else里面的内容,Linux系统可以执行)

应用场景:当执行一个脚本而阻塞其它脚本时,如:订单状态更改处理

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM