解决 PHP 报错 Allowed memory size of 134217728 bytes exhausted (tried to allocate 78 bytes)

今天老王在用 PHP 操作数据库时遇到了一个错误:Allowed memory size of 134217728 bytes exhausted (tried to allocate 78 bytes),导致这个错误的原因是内存溢出,即超过了 PHP 允许的最大内存,本文分享下解决方法。

一、解决方法

对于 PHP 内存溢出的问题,这里提供 2 个常用的解决方法,一个是修改 php.ini,一个是用 ini_set 修改配置。

1、修改 php.ini

编辑 php.ini 文件,默认的限制应该是 128M,即 memory_limit = 128M,我们可以修改成 512M:memory_limit = 512M

修改完毕后重启 PHP 即可生效。

2、利用 ini_set 修改配置

同样是修改成限制 512M,可以利用这段代码:

ini_set ('memory_limit',  '512M')

二、扩展阅读

memory_limit = 128M 解读:Maximum amount of memory a script may consume (128MB),即最大单线程的独立内存使用量。

memory_limit 的内存分配,标配是 128M。一旦独立的线程超过了 128M,那PHP会报错: Fatal error: Allowed memory size of 33554432 bytes。对于 8G 内存的服务器,如果同时并发的响应达到 50,每个都是 128M 的峰值,那估计也是服务器会卡死的时候。

尽量降低 128M 的内存配置,如果调整至 64M,服务器的负载基本能下降一半左右,如果能调整至 32M 效果更好。但是对于应用的要求就更高,很多表建立初期就没有考虑到这个问题,如果你要采用 memcache 作为数据的存储,必须提前完成优化数据表的设计部署,降低独立线程 PHP 的内存使用量,服务器的响应和负载降低的就不仅仅是几个百分点的效果了。

赞(7)
关注我们
未经允许不得转载:老王博客 » 解决 PHP 报错 Allowed memory size of 134217728 bytes exhausted (tried to allocate 78 bytes)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址