php7 mysql 内存_php插入mysql大量数据造成内存不足【原创】

在处理Excel数据导入MySQL时遇到内存不足问题,通过调整php.ini的`memory_limit`至200M暂时解决,但发现是由于多次循环插入导致。采用MySQL的批量插入方式优化,降低内存消耗,最终设置`memory_limit = 80M`即可成功插入,减少内存使用。
摘要由CSDN通过智能技术生成

在做项目时,需要从excel中读取数据插入数据表,测试的excel表格大概有600条数据左右,结果在插入数据时报错,如下

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)

原来是php.ini中的内存分配的问题,默认php代码能够申请到的最大内存字节数就是134217728 bytes,

如果代码执行的时候再需要更多的内存,就会报错了,于是就将php.ini文件中的配置改了一下:

memory_limit = 128M;将128M改成了256M

但是之后一想,一次请求的内存空间就要超过128M,那不管你以后将memory_limit设置成多大,以后肯定有出问题的时候。

起初的办法是在变量赋值后,却从来没有 unset ($var) 过。导致了内存占用越来越多,所以以后一个变量不再使用之后,一定要记得unset掉它。

测试时还是没有用,将 memory_limit = 200M时,测试后可以插入成功,那这肯定是代码的问题!

发现其中有两个foreach插入数据到两个表,每次循环插入一个表大概要执行5次,总共是600条数据,就要执行插入6000多次,这应该是导致内存不足报错的原因所在,下面是我的解决办法:利用 mysql 的 INSERT INTO 一次插入多条数据 ,格式如下:

INSERT INTO store_manufacturer (store_id, manufacturer_id ) values(1,3), (1,4), (1,5), (1,7), (1,9), (1,19), (1,20);

设置 memory_limit = 80M, 数据插入成功,没有报错,这样就减少了内存。

当然还有更多好的办法,还等待小伙伴一起探索!

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/12852.html

75d087ef9a9fb11dc373caaf33adbf7f.png

54fe503922528d762f0cfb4f3f25f0cf.png

微信打赏

ab057a8c86cfcd121cb06aca8195e288.png

支付宝打赏

感谢您对作者Bruin的打赏,我们会更加努力!    如果您想成为作者,请点我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值