zoukankan      html  css  js  c++  java
  • 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下做验证,Linux系统可以,fclose()文件会自动解锁,当程序执行到解锁文件之前时中断,会成为死锁。

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

  • 相关阅读:
    001 windows下如何生成公钥和私钥
    函数基础
    各种推导式
    MySQL误删数据
    kafka 学习笔记
    Nginx 功能
    Nginx 到底可以做什么
    Nginx 到底可以做什么
    Shell的18条常用命令整理
    超详细 Nginx 极简教程
  • 原文地址:https://www.cnblogs.com/wheats/p/11915510.html
Copyright © 2011-2022 走看看