概述
<script type="text/javascript">
//编辑时锁定
function lock() {
var controller = "<?= $this->context->id ?>";
var id = "<?= $id?>";
//发送锁定请求
$.getJSON('/admin.php?r=site/lock', {id: id, controller: controller}, function (json) {
// console.log(json);
});
}
lock();
setInterval(lock, 30000);
</script>
/**
* 编辑时锁定(内容、图书编辑时,为了避免多人同时对同一条记录进行操作,记录在编辑时进行锁定)
* @param integer $id 记录id
* @param string $controller 控制器id
*/
public function actionLock($id, $controller)
{
$cache = Yii::$app->cache;
$key = 'lock_'.$controller.'_'.$id;
$value = ['locked' => time(), 'lockedby' => Yii::$app->session->get('__id')];
if ($cache->set($key, $value, 60)) {
$ret = ['state' => true];
} else {
$ret = ['state' => false];
}
echo json_encode((object)$ret);
}
public function isLock($id)
{
$cache = Yii::$app->cache;
$key = 'lock_'.$this->id.'_'.$id;
$value = $cache->get($key);
if ($value && $value['lockedby'] != Yii::$app->session->get('__id')) {
Yii::$app->session->setFlash('tips', '<span id="message" style="color:#004eff;display: block;text-indent: 40%;">此条记录已锁定,请稍后再试</span>');
return false ;
}else{
return true;
}
}
//锁定后直接跳转,否则,会继续加载页面,重新锁定,锁定无效
public function actionRolelist_update($id)
{
$model = OrgRole::findOne($id);
if (!$this->isLock($id)){
$this->redirect($_SERVER['HTTP_REFERER']);
};
}
最后
以上就是甜甜项链为你收集整理的php锁定记录,防止多人操作的全部内容,希望文章能够帮你解决php锁定记录,防止多人操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复