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://myzitong.com/article/ddgjghc.html