mysql 字段并不是越大越好,这不 php 内存爆掉了

更新日期: 2017-10-30 阅读次数: 6497 分类: MySQL

为了一时之快,将存储商品描述的字段由 text 变更成了 longtext。

结果,由于升级 summernote 版本,导致图片上传 cdn 的回调函数失效,新上传图片都被转换成了 base64 存储与描述字段中。每个商品至少有 10 张这种图片,一张图片大概1兆左右。原本如果使用 text 是可以规避这个问题的,因为 text 存储的内容大概为 65k,而 longtext 存储上限大概为 4G,所以默认的 php 内存上限被轻松超过。

2017/10/28 18:12:09 [error] 26887#26887: *839609 FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 18035640 bytes) in vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php on line 171" while reading response header from upstream, client: 111.35.61.75, server: xxx, request: "POST /admin/product/33 HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:",

临时的解决方案

  • 兼容了 summernote 0.8.8 版本的图片上传 cdn 逻辑
  • 手动修改了几个商品中的 base64 图片为 cdn 链接

感觉还是应该加上字数限制,即使使用了 longtext。

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式