发布于: 2022-06-24 11:47:15

/**

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

     */

    public function createOrder1(){

        $file = fopen(__DIR__.'/lock.txt','w+');

        //加锁

        if(flock($file,LOCK_EX)){

            //TODO 执行业务代码

            flock($file,LOCK_UN);//解锁

        }

        //关闭文件

        fclose($file);

    }

  

    /**

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

     */

    public function createOrder2(){

        $file = fopen(__DIR__.'/lock.txt','w+');

        //加锁

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

            //TODO 执行业务代码

            flock($file,LOCK_UN);//解锁

        }else{

            //TODO 执行业务代码 返回系统繁忙等错误提示

        }

        //关闭文件

        fclose($file);

    }


延伸阅读
    发表评论