今天Kim在用 PHP 操作数据库时遇到了一个错误:Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes),导致这个错误的原因是内存溢出,即超过了 PHP 允许的最大内存,本文分享下解决方法。
一、解决方法
对于 PHP 内存溢出的问题,这里提供 2 个常用的解决方法,一个是修改 php.ini,一个是用 ini_set 修改配置。
1、修改 php.ini
修改完毕后重启 PHP 即可生效。
2、利用 ini_set 修改配置
同样是修改成限制 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 的内存使用量,服务器的响应和负载降低的就不仅仅是几个百分点的效果了。
更多
本站资源大多来自网络,如侵犯你的权益请联系管理员 邮箱:1477925483@qq.com 我们会第一时间进行审核删除。站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!
如果遇到 付费才可下载浏览的文章,建议开通本站超级会员。全站所有资源“任意下免费看”。本站资源部分采用 exe自压缩技术,为防止有人不了解自解压导致无法解压,强烈建议使用电脑端下载7-zip,zip、rar解压,推荐使用WinRAR。
暂无评论内容