当前位置: 首页 > 后端技术 > PHP

PHP使用文件锁处理高并发

时间:2023-03-30 03:36:37 PHP

使用flock()函数对文件进行加锁(排他锁),实现并发和顺序执行。flock(file,lock,block)有三个参数。file:打开的文件lock:锁类型LOCK_SH:共享锁(读锁)LOCK_EX:排他锁(排他锁,写锁)LOCK_UN:解锁LOCK_NB:如果要在文件被锁定时阻塞进程,需要加上这个参数block:设置为true时,文件被锁定时其他进程会被阻塞file=fopen(__DIR__.'/lock.txt','w+');//lockif(flock($file,LOCK_EX)){//TODO执行业务代码flock($file,LOCK_UN);//unlock}//关闭文件fclose($file);}/***非阻塞模式(只要当前文件有锁,则直接返回)*/publicfunctioncrateOrder(){$file=fopen(__DIR__.'/lock.txt','w+');//lockif(flock($file,LOCK_EX|LOCK_NB)){//TODO执行业务代码flock($file,LOCK_UN);//unlock}else{//TODO执行业务代码返回错误信息如systemisbusy}//关闭文件fclose($file);}Tips:执行fclose()时文件会自动解锁,所以解锁代码可以省略