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