abrahamgreyson

第 88 位会员

会员
个人信息
  • 加入于 2015-07-23 17:01:08
  • 最后登录时间 3年前
个人成就
  • 发表文章次数 0
  • 发布回复次数 3
  • 个人主页浏览次数 9
请问唯一性验证具体的执行方式,以及消耗。避免重复提交3年前

@xjdata 是的,如果有 100 个用户同时在线,那么每个用户维护 100 个, 就是一万个。 session 要设置过期时间,过期后,会被 PHP 的垃圾回收自动处理,详情见:PHP session 现在 PHP session 很少有用默认的文件存储了, 因为会存在文件锁引起的 bug,大多数用内存缓存或数据库缓存。所以关于性能和空间占用完全可以不用考虑,很多时候,开发就是用冗余去换用户体验,在两者中间找平衡。 过早的优化,是 bug 产生的根源。 用 hash 也是一个办法,但是比这个办法更不简单。

请问唯一性验证具体的执行方式,以及消耗。避免重复提交3年前

user_idcreate_at 联合唯一,如果 create_at 两次提交的不一样,这个索引是不生效的。 只有当两者完全相同时,才会拒绝重复,所以看你 created_at 的最小单位了,如果是分钟或者秒,点的慢点,可能都会重复提交。

还有我觉得不该用数据库去约束, 应该用 session 之类的,全站统一一个类似过滤器的东西,在用户所有创建内容的地方,判断 session 去确定是否符合最小间隔时间。

if (time() - session('comment_on_article_1') < 15) {
  return 0;
}
return 1

session 的命名,应该能通过你的内容栏目名字逆向出来,这样就有迹可循了,可以指定类似“每篇文章允许15秒内评论一次” 的规则。