php数据库操作加锁 php添加数据库
php里如果二个人同时操一个数据库里表的字段,怎么避免
1、数据库里有个东西叫锁
我们提供的服务有:网站制作、网站设计、微信公众号开发、网站优化、网站认证、剑阁ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的剑阁网站制作公司
2、在每个人操作表的时候,对表加锁,这样防止别人对表数据脏读、脏写
3、操作完成后,释放锁
4、小心,加锁后可能会造成死锁,特别是锁过多的时候。
用锁需谨慎,有风险,但对数据来说是安全的
开发php网站,mysql做数据库一定要用锁吗?
一般情况下,MYSQL在更新操作会自动加表锁。不需要显式加锁。除非是数据要求严格的逻辑写顺序。
执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作 (UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁,这个过程并不需要用户干预,因此,用户一般不需要直接用LOCK TABLE命令给MyISAM表显式加锁。
PHP下如何对文件进行加锁
/**********************************************
*file lock
*@author Zeal
Li
*
***********************************************/
/*
*lock_thisfile:获得独享锁
*@param $tmpFileStr 用来作为共享锁文件的文件名(可以随便起一个名字)
*@param $locktype 锁类型,缺省为false(非阻塞型,也就是一旦加锁失败则直接返回false),设置为true则会一直等待加锁成功才返回
*@return 如果加锁成功,则返回锁实例(当使用unlock_thisfile方法的时候需要这个参数),加锁失败则返回false.
*/
function
lock_thisfile($tmpFileStr,$locktype=false){
if($locktype ==
false)
$locktype = LOCK_EX|LOCK_NB;
$can_write = 0;
$lockfp = @fopen($tmpFileStr.".lock","w");
if($lockfp){
$can_write = @flock($lockfp,$locktype);
}
if($can_write){
return $lockfp;
}
else{
if($lockfp){
@fclose($lockfp);
@unlink($tmpFileStr.".lock");
}
return false;
}
}
/**
*unlock_thisfile:对先前取得的锁实例进行解锁
*@param $fp lock_thisfile方法的返回值
*@param $tmpFileStr
用来作为共享锁文件的文件名(可以随便起一个名字)
*/
function
unlock_thisfile($fp,$tmpFileStr){
@flock($fp,LOCK_UN);
@fclose($fp);
@fclose($fp);
@unlink($tmpFileStr.".lock");
}
?
?php
// 使用举例
$tmpFileStr = "/tmp/mylock.loc";
// 等待取得操作权限,如果要立即返回则把第二个参数设为false.
$lockhandle =
lock_thisfile($tmpFileStr,true);
if($lockhandle){
//
在这里进行所有需要独占的事务处理。
// ... ...
// 事务处理完毕。
unlock_thisfile($lockhandle,$tmpFileStr);
}
?
本文标题:php数据库操作加锁 php添加数据库
分享路径:http://azwzsj.com/article/ddgjghc.html