<?php
defined('IN_PHPCMS') or exit('No permission resources.');
/*
备注:本代码只适用于PHPCMS V9内核,用户执行多进程任务时用文件锁防止并发执行。
PHPCMS V9 专用多用户进程锁(文件锁实现)功能块
功能:用于执行PHP多进程任务时防并发加锁类实现
BY :QQ:383624314
*/
class lock {
public function __construct() {
$this->timeout = 600; //10分钟(后台任务最长超过十分钟就会并发)
}
/*
程序逻辑实现主体(暂时没写)
*/
public function index() {
/*
调用案例代码
try {
//一:执行加锁
$this->lock->lock($user_id);
} catch (Exception $e) {
$this->lock->Unlock($user_id);
echo '进行异常结束';
die;
}
*/
}
//执行加锁
public function lock($user_id) {
//$user_id=$this->user_id;
$getcache=getcache($user_id);//读缓存
if($getcache){//有锁就执行
if(time()-$getcache['outtime']>$this->timeout){
//超时,则删除掉
delcache($user_id);//删除文件锁
}else{
die("please wait for a moment!");
}
}else{//没锁就执行
//重新创建锁
$arr=array();
$arr['user_id']=$user_id; //旺旺名
$arr['outtime']=time();//当前时间
setcache($user_id,$arr);//存入缓存
}//IF END
}//function end
// 解锁 (直接删除文件锁)
public function Unlock($user_id) {
// $user_id=$this->user_id;
delcache($user_id);//删除文件锁
}//END
}
?>
V9中调用方法
$this->lock = pc_base::load_app_class('lock');//调用分类输出封装类
$this->lock->Unlock($user_id);
PHP异步请求函数
http://blog.csdn.net/zhoushengbin3/article/details/9113949
PHP进程锁
PHPCMS V9 内核多进程文件锁封装类
最新推荐文章于 2022-08-21 23:30:43 发布