用户评论的时候添加楼层数,同时评论时就重复了怎么处理?

用YII框架开发的一个企业号,一条新闻里面,用户评论时给这条评论增加一个楼层来显示。
楼层数是存放在评论表里面的。
这种并发应该怎么处理?

阅读 4.8k
4 个回答

不要分配楼层序数,楼层序数是根据取出的结果在输出的时候才计算的

对当前用户来说,可能自己的评价就是显示在它能看到的下一个楼层,但是对数据来说,不管是不是并发,总是有先后顺序的,总能安装一种规则排出顺序来,在当前用户刷新了页面后他才能确定自己真实的楼层,就跟抢楼一样。

评论表设置一个自增id,程序插入数据的时候,不声明楼层数,插入数据后,假如获取返回的自增id为100,查询当前新闻id下,自增id小于等于100的记录数,即为当前评论的楼层数,再更新到评论表里。

我猜的话楼主你每次写入表之前都会取一下当前的最大楼层,然后有个+1的处理,再插入。这样并发情况下,确实会出问题。小弟愚见,有两套方案:

  1. 用PHP文件锁,保证并发插入楼层不会错乱。

  2. redis做队列。最大楼层可以用一个单独的key=>value保存,更新速度肯定快。然后再用list做个队列,保证并发下,不存在评论重复的情况。

楼主可以自己试试,我的回答有问题的话还望大神指点指点。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题