发现问题
经常我们在处理数据量比较大的时候会遇到“Fatal error:Allowed memory size of 67108864 bytes exhausted (tried to allocate 76 bytes)......”这种错误,原因是内存溢出了!
来,举一个栗子?:
原因分析
- 一次性读取10W条数据(单条数据量大)
- 读取超200M大文件Excel数据内容时
- 处理超大型日志文件数据
- ......
这些操作都是非常吃内存,内存缓冲区超过存放限制大小就会导致内存溢出。
解决方案
- 在代码中设置limit_momery大小,如ini_set('limit_momery','512M'),设置限定的内存大小值,“-1”表示不做限制。
- 在php.ini配置文件中设置limit_momery = 512M,重启PHP即可。
其实有些时候是可以避免出现这种错误了,这就需要自己对代码的质量严格把控一下!
建议
给出以下几个方面的建议:
- 数据量大的做分页处理,一定不要一次性读取所有的数据。
- 及时释放用完的变量,使用unset函数处理。
- 开辟合理的存储空间,合理使用。