suchen

Heim  >  Fragen und Antworten  >  Hauptteil

mysql - php高并发下如何防止数据的重复写入

前端请求php写入数据的接口太频繁,导致mysql中出现大量重复数据,如何处理

PHP中文网PHP中文网2819 Tage vor1150

Antworte allen(18)Ich werde antworten

  • ringa_lee

    ringa_lee2017-04-10 16:48:09

    一般来说都是前端限制下,比如button按钮在后端响应结束之前置灰;一般需求这样做就足够了

    七目鱼

    Antwort
    0
  • 黄舟

    黄舟2017-04-10 16:48:09

    前端限制 -- 过滤频繁的请求,如按钮变灰,或者控制一个标志变量来判断是否执行ajax请求 。。这个只是体验,并不能真的限制~~
    关键是后端限制
    比如: select for update

    Antwort
    0
  • 黄舟

    黄舟2017-04-10 16:48:09

    整个请求的过程都可以做放置重复提交的验证。

    1. 在前端控制,比如按钮置灰等

    2. 在后端业务逻辑中,通过查询,判断该内容是否已经提交过(通过缓存来记录之类的)

    3. 在数据库层通过唯一键的方式来限制重复提交的记录。对于重复提交的内容自动被过滤。

    在高并发的情况下,其实还要考虑下db 是不是能够扛得住并发,所以增加队列的限制,使得并发在进入db 的时候是一个串行的操作,当然这个还得看时机情况了。

    Antwort
    0
  • PHPz

    PHPz2017-04-10 16:48:09

    MYSQL 的话用事务处理吧。。。

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 16:48:09

    楼上回答的,有没有看问题啊。这种情况基本上只能靠前端做限制,或者API规定同一个唯一标识的请求频率。

    Antwort
    0
  • 巴扎黑

    巴扎黑2017-04-10 16:48:09

    需要说明什么数据重复了,重复了有什么影响?业务逻辑上要做避免重复的检查吗?先把业务逻辑定义清楚,才能有针对性的出解决方案。

    Antwort
    0
  • 阿神

    阿神2017-04-10 16:48:09

    前端先过滤掉重复刷新的。然后服务端再去过滤。

    Antwort
    0
  • 高洛峰

    高洛峰2017-04-10 16:48:09

    在表单里生成一个唯一的标识,提交的时候判断这个标识的内容有没有提交过了。

    Antwort
    0
  • StornierenAntwort