微信小程序答题系统实现随机出题 答题小程序如何实现随机出题 微信小程序 答题系统

     最近头脑王者很是火爆,公司也在开发相似头脑王者的答题系统,这个重任交到我这边来了,咱们在开发的这个微信小程序答题系统,须要实现随机出题。尤为是一些好比闯关的环节,须要随机从题库里抽取若干道题目,给到用户答题。那么要如何来作呢?php

   首先咱们要作两张表,一张是exam表,用来存考卷的。另一张是题库表,question表。前端

   在exam表里设置好考试的参数,好比说本次考试是随机抽多少题,而后在sql语句中,随机从question表中抽取题目。sql

    注意了,划重点了,一些关键点来了。小程序

   随机抽题目,通常人想到的是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后端加小程序前端结合  今天就给你们分享到这里,但愿对你们有所帮助。欢迎交流  你们相互学习 共同提升 个人 微信号:qiufeng2999spa

相关文章
相关标签/搜索