1、一般的加锁,针对并发量不大的情况;
2、对文件进行加锁时,设置一个超时时间。大致实现如下:
if($fp=fopen($fileName,'a')){
$startTime=microtime();
do{
$canWrite=flock($fp,LOCK_EX);
if(!$canWrite){
usleep(round(rand(0,100)*1000));
}
}while((!$canWrite)&&((microtime()-$startTime)<1000));
if($canWrite){
fwrite($fp,$dataToSave);
}
fclose($fp);
}
3、对操作的文件进行随机读写,以降低并发的可能性;
4、将所有要操作的进程放入一个队列中;