mysql高并发时候投票问题 如何优化

比如一万人给一个人投票
我的做法是先是读取票数然后在票数+1
但是一万人同时投票的话 获取票数和更新肯定获取的不对

代码如下 用的是phpcms 请问大神该怎么优化 代码就这么点 结构简单的 就是投票人比较多

//根据ID获取票数
$r = $db->get_one(array('id' => intval($_GET['id'])));
//票数累计并更新票数
$num = $r['num'] + 1;
$sql = array('num' => $num);
$db->update($sql, array('id' => intval($_GET['id'])));
阅读 2.1k
评论
    8 个回答

    诚邀。

    如果你不想或者不愿意将redis引入到phpcms中。
    我没有对phpcms进行过二次开发,但是你可以在sql中直接进行相加,并非使用代码去实现相加

    update student set score=score+1 where id = 1

    这样就避免了投票不准确
    如果有时间可以使用redis或者队列去实现这个功能。

      相似问题
      推荐文章