php并发处理文件

1、阻塞(等待)模式

$fp=fopen("lock.txt","w+");

if(flock($fp,LOCK_EX){

    //处理文件

    flock($fp,LOCK_UN);

}

fclose($fp);


2、非阻塞模式

$fp=fopen("lock.txt","w+");

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

    //处理文件

    flock($fp,LOCK_UN);

}else{

    echo "系统繁忙,请稍后再试";

}

fclose($fp);


说明:

LOCK_SH:只读锁定

LOCK_EX:写锁定

LOCK_NB:非阻塞锁定

LOCK_UN:取消锁定