可使用PHP现成的函数flock来实现:php
<?php多线程
$fp = fopen("/tmp/lock.txt","w+");ide
if(flock($fp, LOCK_EX)){// 进行排它型锁定函数
fwrite($fp,"Write something here\n");线程
flock($fp, LOCK_UN);// 释放锁定进程
}else{it
echo "Couldn't lock the file !";class
}file
fclose($fp);程序
?>
用flock在写文件前先锁上,等写完后解锁,这样就实现了多线程同时读写一个文件避免冲突。大概就是下面这个流程
/*
*flock(file,lock,block)
*file 必需,规定要锁定或释放的已打开的文件
*lock 必需。规定要使用哪一种锁定类型。
*block 可选。若设置为 1 或 true,则当进行锁定时阻挡其余进程。
*lock
*LOCK_SH 要取得共享锁定(读取的程序)
*LOCK_EX 要取得独占锁定(写入的程序)
*LOCK_UN 要释放锁定(不管共享或独占)
*LOCK_NB 若是不但愿 flock() 在锁定时堵塞
/*
if (flock($file,LOCK_EX))
{
fwrite($file,'write more words');
flock($file,LOCK_UN);
}
else
{
//处理错误逻辑
}
fclose($file);
)