微信小程序上傳多張圖片,后端只保存了最后一張的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是行級鎖,應該問題不大~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM