Fatal error: Allowed memory size of 134217728 bytes exhauste
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-21 21:37:18 浏览: 评论:0
运行dedecms时,有些朋友会发现有些页面会提示Fatal error: Allowed memory size of 134217728 bytes exhauste错误了,下面我们一起来看看解决此问题办法.
报错提示:Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 38218371 bytes) in .....
解决方法:
1.取消PHP的内存限制,在php程序中添加 ini_set("memory_limit","-1");
2.根据自己的需要及参考本机的内存大小修改php内存限制,如改为1024M.
在php程序中添加 ini_set("memory_limit","1024M"); 或者将php.ini中相应位置改为memory_limit = 1024M;
内存限制的意义
php中的相关文档解释 memory_limit 如下:memory_limit: integer
该指令设定了一个脚本 所能够申请到的最大内存字节数,这有助于防止写得不好的脚本消耗光服务器上的可用内存,要使用此指令必须在编译的时候激活,因此 configure 一行中应该包括:--enable-memory-limit,如果不需要任何内存上的限制,必须将其设为 -1.
从 php 4.3.2 起,当激活了 memory_limit,PHP 函数 memory_get_usage() 便可以使用了,也就是说,php在一个 page 中的处理内存限制,默认的(/etc/php.ini)定义为 128M (我的系统默认安装后),后来开发组的应用写的越来越复杂,但是在结构上可能还有些欠缺,频繁的对象请求,居然造成了内存不足.
应用层面测试与解决方法,最好的方式应该在应用层面解决,而不是不断的增加内存设置,以下为代码测试:
- <?php
- printf(" total run: %.2f s<br>".
- "memory usage: %.2f M<br> ",
- microtime(true)-$HeaderTime,
- memory_get_usage() / 1024 / 1024 );
- ?>//开源软件:phpfensi.com
- //运行结果显示如下:
- total runtime: 1.47 s
- memory usage: 77.09 M
一个页面居然会有77M的请求,究其原因,是程序员在编码时,仅仅对变量赋值,却从来没有 unset ($var) 过,试想,如果一个页面请求要处理20个sql查询,每个sql查询返回10个sql结果,而程序员从来都不关心是返回一个row的所有column还是仅仅返回需要的column(实际上当我们采用更common的中间层时,往往会返回全部的column而不是特定的某几个字段,就像在 ORM 中如NHibernate,JBOSS中的那样)如果一条row有10K,那么这个页面到处理结束时就要增加到 10K*10*20=2M的数组分配,这还不算有时候我们需要最数组进行复制.
所以在php中,合理的方法是变量使用后就 unset($var),最大限度节省内存资源.
经验之谈:本人有一台服务器使用的是apaceh2.3与php5.2.6上面的方法无效,经官方确认是php版本bug了,我们可以换个高版本手php版本即可解决.
Tags: Fatal error:Allowed memory
相关文章
- ·Fatal error: Call to undefined function curl_init(2013-11-28)
- ·Fatal error: Cannot redeclare 常见问题(2013-11-29)
- ·php中Fatal error: Class ZipArchive not found的解决办法(2013-12-02)
- ·php错误Fatal error: Out of memory (allocated 262144)(2013-12-04)
- ·Fatal error: Out of memory (allocated 786432)提示解决办法(2013-12-04)
- ·Fatal error: Maximum execution time of 30 错误(2013-12-04)
- ·Fatal Error: Allowed memory size of 123456789 bytes exhausted(2013-12-04)
- ·PHP 报错 Fatal error: Class 'COM' not found in(2013-12-05)
- ·PHP Fatal error: Cannot use object of type stdClass as array in错误(2014-09-20)
- ·php程序执行超时解决办法(Fatal error: Maximum execution time of 30)(2014-09-21)
- ·php提示Fatal error: Call to undefined function imagecreate()(2014-09-21)
- ·php Fatal error: Call to undefined function imagecreatefromjpeg()(2015-04-04)
- ·php Fatal error: Call to undefined function mb_convert_encoding()(2015-04-04)
- ·php提示Fatal error: Call to undefined function openssl_x509_parse()(2015-04-04)
- ·php使用ZipArchive提示Fatal error: Class ZipArchive not found in(2015-04-09)
- ·Fatal error: Access level to xxx must be protected 错误解决(2016-08-25)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)