解决PHP多进程或多线程同时读写一个文件问题

第一个文件


$res1 = fopen("demo.txt","w+");

// 加写锁
if(flock($res1,LOCK_EX)){
    echo "写入1";
    sleep(10);
    echo "写入2";
    flock($res1,LOCK_UN);
}else{
    echo " 枷锁失败";
}
fclose($res1);

在执行第一个文件时,运行第二个文件


$res2 = fopen("demo.txt","w+");
// LOCK_NB 附加锁,加了之后不会阻塞,而是直接失败
if(flock($res2,LOCK_EX+LOCK_NB)){
    echo "枷锁成功";
}else{
    echo "枷锁失败";
}
fclose($res2);

运行结果

文件一

解决PHP多进程或多线程同时读写一个文件问题_第1张图片

文件二运行结果

在这里插入图片描述

你可能感兴趣的:(php,flock,多进程,锁)