项目中遇到需要统计周粒度数据,随着时间越来越长,请求的数据会越来越多,超过nginx fastcgi_read_timeout 10
的限制,所以出现504 Gateway Time out,我把数据放到一个中间数据表中,当前端需要请求数据的时候从 中间数据表中获取数据,但是,发现Http状态码变成了500,看了一下日志报错出现
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 336219 bytes)
PHP脚本内存不足,使用
echo memory_get_usage();
看了一下内存使用,超出了php.ini中memory_limit 128M
的限制,所以开始报错,找了好久,最后看了一下中间表的数据,不是很正常,多出来很多重复的数据,原因是
我代码中没有声明数组 $arr = array();
后面代码中使用$arr [] = array();
一直向数组中添加数据,导致多了很多重复的数据,数据量瞬间增加了很多,这样就造成出现PHP脚本出现内存不足的原因了
所以如果遇到这个问题,很可能是我们程序写的有问题,和同事一起分析,最后找到了原因,想撞墙的感觉!