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’)临时扩大可用内存。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值