- 浏览: 88636 次
- 性别:
- 来自: 深圳
文章分类
最新评论
今天写了个死循环来跑数据,直到跑完才退出。结果还没跑完,PHP就来亮红灯了。
Fatal error: Allowed memory size of 268435456 bytes exhauste d
(tried to allocate 48 bytes) in D:\www\mpaa\include\function\aa.func.php on line 278
针对这个问题的解决方法有两种:
一是直接取消PHP的内存限制:ini_set("memory_limit","-1");
二是根据自己的需要及参考本机的内存大小修改php内存限制,如改为516M;即ini_set("memory_limit","516M");
或者在php.ini文件里修改memory_limit = 516M;
但是内存限制有啥意义呢?
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 (我的系统默认安装后),后来开发组的应用写的越来越复杂,但是在结构上可能还有些欠缺,频繁的对象请求,居然造成了内存不足。
上面我们说过,最好的方式应该在应用层面解决,而不是不停的增加内存设置。我对代码进行了一个测试,在页面结尾输出下面内容:
<?
printf(" total run: %.2f s<br>".
"memory usage: %.2f M<br> ",
microtime(true)-$HeaderTime,
memory_get_usage() / 1024 / 1024 );
?>
结果显示可以用骇人听闻来形容:
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) 吧。毕竟资源还是有限制的。
发表评论
-
RedHat下安装并开启PHP GD库的方法
2014-10-13 15:25 2070GD库是PHP进行图文操作时一个重要的库。红帽系统适合用编译安 ... -
PHP获得真实客户端的真实IP
2014-09-25 10:19 1762REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的 ... -
xxtea加密解密算法的PHP实现
2012-11-29 10:35 1589Class Xxtea { pu ... -
PHP:字符串变量中大括号(花括号{})的作用
2012-11-29 09:50 1574PHP 变量后面加上一个大括号{},里面填上数字,就是指 PH ... -
Linux下的 ZipArchive 配置
2012-08-22 13:25 3492今天在Linux底下上传Excel文件时,抛出“Z ... -
解决PHP不能上传、拷贝含有中文路径文件的问题
2012-08-01 16:29 4311在使用copy()、 move_uploaded_file ... -
empty(), is_null(), isset() 的真值表
2012-06-25 16:22 893比较全面,以便不时之需。 -
PHP获取当前时间的毫秒数
2012-06-25 16:04 238221 second = 1000 millisecond = 1 ... -
PHP之引用
2012-06-07 16:01 982所谓PHP的引用,就是不同的名字访问同一个变量内容。可 ... -
CI框架与widget(页面布局)
2012-02-10 11:24 1634在WEB开发过程中,我们免不了要输出视图文件,而 ... -
解决url传输的中文字符乱码
2011-12-31 18:16 1106今天在做接口的时候,遇到在url里带参数时,当传入中文字符 ... -
关于obstart()
2011-12-13 09:54 915最近在开发一系列 ... -
PHP开发编码规范
2011-11-29 10:20 1233在PHP的编写过程中,越 ... -
sprintf用法小记
2011-11-14 11:06 1083sprintf()函数非常适合生成数据库查询,从而避免我们手工 ... -
查询mysql总结和预处理
2011-11-11 14:11 2393一、连接到mysql: $dbc = mysqli_conn ... -
Apache服务器解析shtml
2011-09-16 11:27 1140首先要配置apache服务器,让apache支持shtml的解 ... -
WindowsXP下Wamp5集成安装memcached
2011-09-16 10:01 1358随着各种公司业务的发展,memcache缓存在为各公司的数 ... -
php中header的用法【转载】
2011-07-25 15:30 864header的用法 header()函数 ... -
php调用远程url的四种方法
2011-03-31 15:57 9541、 用file_get_contents 以get方式获取内 ... -
图片表单提交
2011-01-11 14:52 777很多情况下为了美化表单都会把提交按钮改成用一个图片来代替。 图 ...
相关推荐
php Allowed memory size of 134217728 bytes exhausted
php解决Allowed memory size of bytes exhausted
今天在百度知道看php相关资料时发现一个网友问一个wordpress安装提示错误的一个问题,说他在安装wordpress安装包时遇到这样一个问题:Fatal error:Allowed memory size of 67108864 bytes exhausted (tried to ...
主要介绍了Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)错误的解决方法,需要的朋友可以参考下
本文实例讲述了ThinkPHP提示错误Fatal error: Allowed memory size的解决方法。...错误提示:Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 523800 bytes) in /var/w
Allowed memory size of 134217728 bytes exhausted错误,这种问题一个是程序写得不好导致的,另一个是环境配置不好也会出现,像php5.1.27+apache2.2.3好像在windows2003中就会出现bug不管你怎么修复都无法解决Fatal ...
Laravel开发-laravel-ifx Laravel 5的Informix DB驱动程序
主要为大家介绍了悟空CRM安装出现Fatal error Allowed memory size of 8388608 bytes的解决办法,需要的朋友可以参考下
PHP Fatal error: Allowed memory size of 134217728 bytesexhausted (tried toallocate 135168 bytes) 跟踪代码发现,是在插入时以下代码造成的: EduOCRTaskBackup::getDb()->createCommand()->batchInsert...
包含了php操作excel的读取类及写入类。...Fatal error: Allowed memory size of xxxxx bytes exhausted (tried to allocate 71 bytes) in /xxx/xxx/ss/oleread.inc on line 133]错误 强烈推荐!!!!!
在运行PHP程序,通常会遇到“Fatal Error: Allowed memory size of xxxxxx bytes exhausted”的错误, 这个意味着PHP脚本使用了过多的内存,并超出了系统对其设置的允许最大内存
Fatal error: Allowed memory size of 100663296 bytes exhausted (tried to allocate 103 bytes) 错误提示:php所分配到的100M内存被占用完毕。 二、解决方法: 最简单的解决办法是:在执行文件的头部增加: ini...
Allowed memory size of 8388608 bytes exhausted (tried to allocate 1298358 bytes) 出现该错误的原因:在确保不是程序产生的原因(例如死循环),是由于php页面消耗的最大内存默认是为 8M (在PHP的ini件里可以...
//Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in E:\php\test\index.php on line 5 range(1, 100000000); PHP5.5实现了生成器,每当产生一个数组元素则用yield...
可能有的读者碰到过类似下面的错误吧:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)这个错误的信息很明确,PHP已经达到了允许使用的最大内存了,通常上来说这很有可能是我们...
主要介绍了php采用curl访问域名返回405 method not allowed提示的解决方法,需要的朋友可以参考下