微信小程序答題系統實現隨機出題 答題小程序如何實現隨機出題 微信小程序 答題系統


     最近頭腦王者非常火爆,公司也在開發類似頭腦王者的答題系統,這個重任交到我這邊來了,我們在開發的這個微信小程序答題系統,需要實現隨機出題。尤其是一些比如闖關的環節,需要隨機從題庫里抽取若干道題目,給到用戶答題。那么要如何來做呢?

   首先我們要做兩張表,一張是exam表,用來存考卷的。另外一張是題庫表,question表。

   在exam表里設置好考試的參數,比如說本次考試是隨機抽多少題,然后在sql語句中,隨機從question表中抽取題目。

    注意了,划重點了,一些關鍵點來了。

   隨機抽題目,一般人想到的是sql語句的    order  by rand  ,然后網上你搜下 order by rand語句的優化,也有人提到過,這個order by rand 執行效率很低。尤其是比如你的題庫很大,如果你做大平台的,一定會在后期發生的。我們自己是做平台的,開發好這套系統是要不斷的復制賣給所有的需要的客戶的。所以客戶出的題目肯定會越來越多,題庫要越賴越大的。題庫隨着考試次數增多,題庫將會變的非常大。所以提前就要想好解決辦法,一次性把代碼寫到位。

小程序答題系統 小程序答題

   使用ORDER  BY  RAND  一個15萬余條的庫,查詢5條數據,居然要8秒以上。查看官方手冊,也說rand()放在ORDER BY 子句中會被執行多次,自然效率及很低。

   怎么優化方法很多,大家自行百度,我用的是使用sql語句  limit的偏移量來做的。  

  話不多說,直接上代碼了。tp的風格哈。

  

$total=$questionTable->where($search)->count();  //查看下對應的題目總數有多少
        if($total<=$getrand_Num){ //總的題目數比需要的還小  那就不用隨機了 直接出全部的題目就行了
            $offset = 0;
        }else{
            $offset = mt_rand(0, $total-1);  //偏移量
        }
        $list=$questionTable->where($search)->field($field)->limit($offset,$getrand_Num)->select();

   不知道各位看懂了沒有,這個偏移量的,就是使用這個模式來隨機抽取題目。希望你也按照這個思路優化下你的考試答題系統的隨機出題邏輯。 

 

 我,秋峰,phper,目前自創業,做項目系統開發,php后端加小程序前端結合  今天就給大家分享到這里,希望對大家有所幫助。歡迎交流  大家相互學習 共同提高 我的 微信號:qiufeng2999


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM