PHP Fatal error: Allowed memory size of 134 bytes exhausted

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 6846241 bytes) in xxx.php on line 1。

接手了一个服务器间数据同步的遗留问题,在执行操作的时候,查看调用的接口一切正常,能够被正常调用,但是最后curl出的结果却是“500 Internal Server Error”。

明明在A服务器调用B服务器的接口,然后在B服务器查看时,能够看到接口确实是被调用了,而且接口中间也没有因为其它类或方法等造成问题,为什么会出现500???

百思不得解。。。

最后实在找不到任何提示了,去翻了一下apache的error.log,看到了这么一段“PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 6846241 bytes) in xxx.php on line 1”

啥玩意?!内存不够用了???
难道是单个接口保存的数据量太大了,超过了php设置限制了?

赶快看了一看php.ini,找到了“memory_limit = 128M”配置,128M这么大的内存都不够用了吗!!?

在接口里临时设置了一下,加了一行ini_set(‘memory_limit’, ‘256M’),再执行接口访问,OK,顺利完成,200。

检查后发现,因为是测试环境做测试,服务器之间的脏数据太多,导致全都拿到变量保存后超出了限定的内存使用量,然后发生了错误。

解决问题有两种思路:

第一种方法是通过修改配置来增强包容性:
1、修改php.ini配置,将memory_limit改的大一些(需要注意是否会造成其它的不好的影响);
2、在接口中使用ini_set(‘memory_limit’,’256M’)临时扩大可用内存。

第二种方法是通过优化代码处理逻辑,来限制每次取到的数据量在可控制的范围之内。

发布了105 篇原创文章 · 获赞 58 · 访问量 41万+

猜你喜欢

转载自blog.csdn.net/ljl890705/article/details/78481024
今日推荐