老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

當(dāng)網(wǎng)站性能遭遇瓶頸的時(shí)候

一、問(wèn)題描述
1.起源。我在做一個(gè)在線(xiàn)考試系統(tǒng)的項(xiàng)目中,希望用戶(hù)回答的每一道題都有相應(yīng)的記錄:一是記錄每道題的正確、錯(cuò)誤的次數(shù);二是記錄用戶(hù)每個(gè)錯(cuò)題,用來(lái)形成用戶(hù)的錯(cuò)題集。
當(dāng)網(wǎng)站性能遭遇瓶頸的時(shí)候
2.實(shí)現(xiàn)。由于考試的試卷中有不定數(shù)量的試題,所以我使用循環(huán)在判斷用戶(hù)回答是否正確,并在循環(huán)中記錄數(shù)據(jù),并寫(xiě)入數(shù)據(jù)庫(kù)。
當(dāng)網(wǎng)站性能遭遇瓶頸的時(shí)候
3.瓶頸。由于每提交一個(gè)答卷,就會(huì)產(chǎn)生數(shù)十次或更多的數(shù)據(jù)庫(kù)寫(xiě)入或更新的操作,因此會(huì)耗費(fèi)大量的時(shí)間。
二、問(wèn)題分析

在融水等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需策劃設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營(yíng)銷(xiāo)推廣,成都外貿(mào)網(wǎng)站制作,融水網(wǎng)站建設(shè)費(fèi)用合理。

1.由于每道題都要被記錄兩次:一次是更新試題對(duì)錯(cuò)的次數(shù),二次是記錄到錯(cuò)題集中,如果每個(gè)試卷有20道試題,那么每個(gè)答卷就要進(jìn)行40次數(shù)據(jù)庫(kù)操作,導(dǎo)致數(shù)據(jù)庫(kù)壓力很大。
2.由于每個(gè)試題都是不同的數(shù)據(jù)庫(kù)記錄,因此難以批量更新(有的是新增記錄,有的是更新記錄)。
3.如果大量用戶(hù)并發(fā)提交,那么服務(wù)器就可能崩潰,速度緩慢。雖然我的小網(wǎng)站平時(shí)沒(méi)有那么多人來(lái)光顧,但我自己開(kāi)發(fā)的系統(tǒng)總不能最終成為不可用的廢品吧,所以必須優(yōu)化下!
三、解決思路和方案

1.因?yàn)橛写罅繑?shù)據(jù)庫(kù)操作,所以我首先考慮到的是使用redis來(lái)提升性能。
2.由于更新數(shù)據(jù)的操作既有新增記錄,又有更新記錄,所以必須把更新操作和操作從邏輯上分離出來(lái)。
3.我使用的是thinkphp框架開(kāi)發(fā),模型層自帶批量新增的函數(shù)addAll(),因此,新增數(shù)據(jù)的操作就用它解決了;然后通過(guò)網(wǎng)上搜索或自己編寫(xiě)一個(gè)函數(shù),拼裝批量更新sql語(yǔ)句,形如如下的語(yǔ)句結(jié)構(gòu):
UPDATEcategories SET
display_order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END,
title = CASE id
WHEN 1 THEN 'New Title 1'
WHEN 2 THEN 'New Title 2'
WHEN 3 THEN 'New Title 3'
END
WHERE id IN(1,2,3)

4.通過(guò)redis的hash表來(lái)記錄要更新或新增的數(shù)據(jù),在適當(dāng)?shù)臅r(shí)機(jī),觸發(fā)數(shù)據(jù)庫(kù)操作,通過(guò)php操作redis的數(shù)據(jù),執(zhí)行成功后就刪除那些redis數(shù)據(jù),從而解決瓶頸問(wèn)題。

附:以下是對(duì)試題對(duì)錯(cuò)記錄的優(yōu)化,對(duì)于用于錯(cuò)題集的優(yōu)化代碼類(lèi)似,因此只展示前者的代碼了。
5.redis記錄過(guò)程:
$check ? $field = 'r' : $field = 'w';//檢查對(duì)錯(cuò)
$redis = new \Redis();
$redis->connect('127.0.0.1',6379);
$redis->hIncrBy(‘qid_check_log’,'qid.'.$qid.'.'.$field,1); //鍵值累加1

6.把redis數(shù)據(jù)轉(zhuǎn)存到MySQL中:
$redis = new \Redis();
$redis->connect('127.0.0.1',6379);
$data_cache = $redis -> hGetAll(‘qid_check_log’);
$temp = array(); //待更新的數(shù)據(jù)
$i = 0;

//要增加的數(shù)據(jù)
foreach($data_cache as $key=>$num){
    $arr = explode('.',$key);
    $qid = $arr[1];
    $field = $arr[2];
    $temp[$i]['qid'] = $qid;
    $ids[] = $qid;//需要更新的試題id
    $temp[$i][$field] = $num;
    $redis -> hDel($qid_check_log,$key);
    $i++;
}

if(empty($ids)) return true;//如果沒(méi)有更新,則直接返回

//獲取原來(lái)的數(shù)據(jù)
$map['qid'] = array('in',$ids);
$old_data = M('questionlog') -> where($map) -> select();
$old_data2 = array();
foreach($old_data as $one){
    $old_data2[$one['qid']] = $one;
}
unset($old_data);

//合并數(shù)據(jù)
foreach($temp as &$one){
    if(isset($one['r'])){
        $one['r'] = $old_data2[$one['qid']]['r'] + $one['r'];
    }else{
        $one['r'] = $old_data2[$one['qid']]['r'];
    }

    if(isset($one['w'])){
        $one['w'] = $old_data2[$one['qid']]['w'] + $one['w'];
    }else{
        $one['w'] = $old_data2[$one['qid']]['w'];
    }
}

$re = batch_update('questionlog',$temp,'qid');//執(zhí)行批量更新

后記:其實(shí)當(dāng)初我在編寫(xiě)程序的時(shí)候沒(méi)有設(shè)計(jì)好,如果設(shè)計(jì)得合理的化,也許不需要redis也能完成這個(gè)優(yōu)化,不過(guò),也正好因?yàn)檫@個(gè)機(jī)會(huì),讓我在項(xiàng)目中真正用到了redis,感受到了它的速度優(yōu)勢(shì),哈哈!

本文標(biāo)題:當(dāng)網(wǎng)站性能遭遇瓶頸的時(shí)候
當(dāng)前地址:http://www.xueling.net.cn/article/gjscgj.html

其他資訊

在線(xiàn)咨詢(xún)
服務(wù)熱線(xiàn)
服務(wù)熱線(xiàn):028-86922220
TOP
主站蜘蛛池模板: 精品国产色 | 日韩精品成人免费观看视频 | 日本熟妇人妻xxxxx | 曰本一区二区 | 亚洲最大黄色片 | 黄色成人在线免费观看 | 国产精品偷伦视频免费观看了 | 亚洲欧洲精品一区二区三区四区 | 91超碰刺激偷拍 | 91社91she.com | 99热中文 | 色77影院| 久久精品h | 免费看黄视频在线 | 免费看无码自慰一区二区 | 成人精品视频免费在线观看 | 欧美一级片在线视频 | 色综合天天 | 在线综合国产 | 中文av一区二区三区 | 狼友av永久网站免费观看 | 19禁国产精品福利视频 | 日本韩国一区二区三区视频 | 久久精品三级视频 | 精品一区二区久久久久 | 善良的邻居在线观看 | 免费a级毛片无码a∨ | 欧美日韩精品成人网站二区A∨有 | 亚洲欧美一区二区精品久久久 | 好男人日本社区www 欧美猛男军人gay巨大 | 国产成人aa在线视频 | 欧美精品首页 | 看日本黄色大片 | 影音先锋亚洲AV资源网站 | 好看的一级毛片 | 国产日韩欧美视频 | 国产精品麻豆aⅴ人妻 | 奇米影视7777狠狠狠狠视频 | 色久视频在线播放 | av免费一区二区三区 | 久久久久9999|