php+数据库锁定 数据库 php
php中如何避免mysql数据库死锁
mysql一般不会死锁,除非程序有问题。性能优先事务不优先的数据库(设置)不要追求可靠性万无一失。
成都创新互联自2013年起,是专业互联网技术服务公司,拥有项目成都网站制作、成都网站设计、外贸营销网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元文昌做网站,已为上家服务,为文昌各地企业和个人服务,联系电话:028-86922220
网站性能问题主要是数据库量大了以后,查询扫描硬盘而产生的。其它性能不要太在意。编写代码的时候不要坚持性能原则,而是坚持可用性原则。初学者编写代码通常容易面向性能,但是一个项目的一个页面几百、几千行代码是很常见的。要面向可用性、可维护性、可读性。这是项目原则。你看看java语言。对于网站,除了查询扫描硬盘而产生的时间延迟,其它是不管的,只要不算有问题就可以。
连接方式是否为永久连接,在访问量未达到高并发之前,还是非永久链接更好。非永久连接的资源消耗是不大于永久连接的,因为mysql是把连接权限缓存的,不会多次扫描硬盘,性能是可执行级别的而不是查找数据级别的。在访问量达到高并发之后,性能问题的原因是多方面的,多环节的,是否为永久连接不是主要原因。
php 如何锁表
在进行数据表检查或修补时,可以先将数据表锁定,可确保数据表的安全:
mysqlLOCK TABLE tbl_name READ;
mysqlFLUSH TABLES;
将数据表锁定后再进行检查或修补的工作。完成后再解除锁定:
mys()qlUNLOCK TABLES;
//LOCK TABLE tbl_name READ表示要锁定成只读状态,在这个状态下用户只能读取数据表,不能写入。
LOCK TABLE tbl_name WRITE则是更严格的锁定,用户不能读取也不能写入。
PHP代码 设置用户登陆限制,3次错误锁定账户5分钟
$_SESSION['num'] += 1; if($_SESSION['num'] = 3){此处操作数据库 帐号状态改为锁定 并记录当前锁定时间。
if($_SESSION[$ip] 3){
if(isset($_POST['password']) $_POST['password'] == '123456'){
$_SESSION['ok'] = 1;
$_SESSION[$ip] = 0;//登录成功,IP登录次数归零
header('location:?');}
if(!isset($_SESSION['ok'])){
$_SESSION[$ip] = $_SESSION[$ip] + 1;//累积登录错误次数 exit('form method="post"
password:input type="password" name="password" /input type="submit" value="login" /
/form');}
// cookie保存时间,分钟
$lifeTime = 1800;
setcookie(session_name(), session_id(), time() + $lifeTime, "/"); }
else
{echo '你已经输错3次密码,请等5分钟再试试';}
//获取用户真实IP
function getIp(){ $onlineip='';
if(getenv('HTTP_CLIENT_IP')strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')){
$onlineip=getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR')strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')){
$onlineip=getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR')strcasecmp(getenv('REMOTE_ADDR'),'unknown')){
$onlineip=getenv('REMOTE_ADDR'); elseif(isset($_SERVER['REMOTE_ADDR'])$_SERVER['REMOTE_ADDR']strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){ $onlineip=$_SERVER['REMOTE_ADDR']; } return $onlineip;
} ?通过SESSION和cookie可以简单的就实现了。
新闻标题:php+数据库锁定 数据库 php
分享路径:http://ybzwz.com/article/ddodsoe.html