多进程写文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 多进程写文件
function write_file($filename, $content)
{

$lock = $filename . '.lck';//与文件名关联的加锁文件
$write_length = 0;
while(true) {
if( file_exists($lock) ) {//判断是否已存在该锁,存在则证明已有进程在写文件,休眠100毫秒
usleep(100);//休眠100毫秒
} else {
touch($lock);//加锁
$write_length = file_put_contents($filename, $content, FILE_APPEND);//写文件
break;//退出循环
}
}
if( file_exists($lock) ) {
unlink($lock);//解锁
}
return $write_length;
}