1. 同服务器下, 使用文件锁机制<?php
/**
* 用于解决PHP在并发时候的锁控制,不同的锁之间并行执行,类似mysql innodb的行级锁
*/
class FileLock {
//文件锁存放路径
private $path='/dev/shm';
//文件句柄
private $fp='';
//锁文件
private $lockFile='';
/**
* 构造函数
* @param string $name 锁 KEY
*/
public function __construct($name)
{
$this->lockFile=$this->path.md5($name).'.lock';
}
/**
* 加锁
*/
public function lock()
{
$this->fp=fopen($this->lockFile, 'a+');
if($this->fp===false){
return false;
}
register_shutdown_function(array($this, 'unlock'));
return flock($this->fp, LOCK_EX);//获取独占锁
}
/**