zoukankan      html  css  js  c++  java
  • 微信小程序上传多张图片,后端只保存了最后一张的Bug

      真心吐槽一下微信小程序,上传图片竟然不支持多张一起传。所以,没办法了,后端只能配合做单个单个上传洛。

      遇到的问题:如标题描述,后端mysql存储图片字段用的是json,框架是laravel,model里面用casts将字段imgs转换成array,方便php处理。

      代码示例:(注释掉的一行是我后面为了解决bug加上的)

      

      问题是,每次小程序那边上传多张图片,我这边数据库里面都只记录了一张图片的地址,很是疑惑。

      后来每次把$old打印出来,结果每次都是空数组,于是想到了,可能是因为请求过快,比如3张图片一起传过来,每次读取的时候都没读取到信息,然后就都只保存了自己的,只有最后一个请求完成的生效。

      看了下阿里云oss上面的记录,显示3张图片都收到了,这印证了我的想法。于是让小程序那边请求,做个间隔,比如500毫秒,不要一次性请求,结果bug立马消失,数据库成功记录了3张图片。

      不过这不是最佳解决办法呀。

      想起来了,这是数据库隔离级别的问题。于是乎,去查阅了Mysql的4种隔离级别介绍,内容太长,贴个地址供参考:https://www.jianshu.com/p/4e3edbedb9a8

      最后采用设置会话隔离级别为串行化,解决bug。虽然这会导致第二张图片的上传阻塞,但是为了系统的功能性,以及实际业务的情况,决定还是采用这种办法。不过,Innodb是行级锁,应该问题不大~

  • 相关阅读:
    ubuntu配置bridge网桥
    openstack 手动安装版 功能测试
    BC一周年B
    重构摘要11_处理概括关系
    深入浅出Redis(二)高级特性:事务
    补:小玩文件1-统计文本文件里的字符个数
    【C】字符串,字符和字节(C与指针第9章)
    怎样对报表的參数控件赋值
    POJ-2240 -Arbitrage(Bellman)
    ExtJS学习-----------Ext.Object,ExtJS对javascript中的Object的扩展
  • 原文地址:https://www.cnblogs.com/purelightme/p/9933508.html
Copyright © 2011-2022 走看看