mysql一般不會(huì)死鎖,除非程序有問(wèn)題。性能優(yōu)先事務(wù)不優(yōu)先的數(shù)據(jù)庫(kù)(設(shè)置)不要追求可靠性萬(wàn)無(wú)一失。
成都創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元文昌做網(wǎng)站,已為上家服務(wù),為文昌各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
網(wǎng)站性能問(wèn)題主要是數(shù)據(jù)庫(kù)量大了以后,查詢掃描硬盤(pán)而產(chǎn)生的。其它性能不要太在意。編寫(xiě)代碼的時(shí)候不要堅(jiān)持性能原則,而是堅(jiān)持可用性原則。初學(xué)者編寫(xiě)代碼通常容易面向性能,但是一個(gè)項(xiàng)目的一個(gè)頁(yè)面幾百、幾千行代碼是很常見(jiàn)的。要面向可用性、可維護(hù)性、可讀性。這是項(xiàng)目原則。你看看java語(yǔ)言。對(duì)于網(wǎng)站,除了查詢掃描硬盤(pán)而產(chǎn)生的時(shí)間延遲,其它是不管的,只要不算有問(wèn)題就可以。
連接方式是否為永久連接,在訪問(wèn)量未達(dá)到高并發(fā)之前,還是非永久鏈接更好。非永久連接的資源消耗是不大于永久連接的,因?yàn)閙ysql是把連接權(quán)限緩存的,不會(huì)多次掃描硬盤(pán),性能是可執(zhí)行級(jí)別的而不是查找數(shù)據(jù)級(jí)別的。在訪問(wèn)量達(dá)到高并發(fā)之后,性能問(wèn)題的原因是多方面的,多環(huán)節(jié)的,是否為永久連接不是主要原因。
在進(jìn)行數(shù)據(jù)表檢查或修補(bǔ)時(shí),可以先將數(shù)據(jù)表鎖定,可確保數(shù)據(jù)表的安全:
mysqlLOCK TABLE tbl_name READ;
mysqlFLUSH TABLES;
將數(shù)據(jù)表鎖定后再進(jìn)行檢查或修補(bǔ)的工作。完成后再解除鎖定:
mys()qlUNLOCK TABLES;
//LOCK TABLE tbl_name READ表示要鎖定成只讀狀態(tài),在這個(gè)狀態(tài)下用戶只能讀取數(shù)據(jù)表,不能寫(xiě)入。
LOCK TABLE tbl_name WRITE則是更嚴(yán)格的鎖定,用戶不能讀取也不能寫(xiě)入。
$_SESSION['num'] += 1;?if($_SESSION['num'] = 3){此處操作數(shù)據(jù)庫(kù) 帳號(hào)狀態(tài)改為鎖定 并記錄當(dāng)前鎖定時(shí)間。
if($_SESSION[$ip] 3){
if(isset($_POST['password']) $_POST['password'] == '123456'){
$_SESSION['ok'] = 1;
$_SESSION[$ip] = 0;//登錄成功,IP登錄次數(shù)歸零
header('location:?');}
if(!isset($_SESSION['ok'])){
$_SESSION[$ip] = $_SESSION[$ip] + 1;//累積登錄錯(cuò)誤次數(shù)?exit('form method="post"
password:input type="password" name="password" /input type="submit" value="login" /
/form');}
// cookie保存時(shí)間,分鐘
$lifeTime = 1800;
setcookie(session_name(), session_id(), time() + $lifeTime, "/"); ??}
else
{echo '你已經(jīng)輸錯(cuò)3次密碼,請(qǐng)等5分鐘再試試';}
//獲取用戶真實(shí)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;
}??通過(guò)SESSION和cookie可以簡(jiǎn)單的就實(shí)現(xiàn)了。