当前位置:微信小程序开发 > 小程序资讯 > 小程序开发教程 > 小程序答题系统随机答题的实现

小程序答题系统随机答题的实现

2018-07-26 15:23 来源: 霸界科技

摘要:问答答题小程序的开发掀起了一股热潮,我们在开发微信小程序答题系统,需要实现随机出题。尤其是一些比如闯关的环节,需要随机从题库里抽取若干道题目,给到用户答题。那么要...

期权保本理财
  问答答题小程序的开发掀起了一股热潮,我们在开发微信小程序答题系统,需要实现随机出题。尤其是一些比如闯关的环节,需要随机从题库里抽取若干道题目,给到用户答题。那么要如何来做呢?
 
小程序答题系统随机答题的实现
 
  首先我们要做两张表,一张是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();
 
  不知道各位看懂了没有,这个偏移量的,就是使用这个模式来随机抽取题目。希望你也按照这个思路优化下你的考试答题系统的随机出题逻辑。
分享到:
最新评论

网友:

验证码: 点击我更换图片

联系我们

业务咨询:15918761088

招商咨询:15918761088(微信同号)

周一至周五 9:30-18:30

公司地址:广州市海珠区昌岗中路166号富盈国际大厦2505室

官方微信 官方微博

Copyright © 2018 www.keji168.com 广州霸界网络科技有限公司版权所有 粤ICP备18083764号-1

客服
套餐咨询,合作细节等
在线客服
电话咨询
159-1876-1088