沃梦达 / 编程问答 / php问题 / 正文

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 85 bytes)

PHP5中报Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 85 bytes)错误,对于memory_limit的设定已经从以往的8M扩大到128M的上限。对于配置中的定义解释是: memory_limit = 128M; Maximum amount of memory a script may consume (128MB) 最大单线程的独立内存

PHP5中报Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 85 bytes)错误,对于memory_limit的设定已经从以往的8M扩大到128M的上限。对于配置中的定义解释是: memory_limit = 128M;
Maximum amount of memory a script may consume (128MB) 最大单线程的独立内存使用量。也就是一个web请求,给予线程最大的内存使用量的定义。

总结,出现这种问题的情况分三种:
1.处理的数据量大
1>时间换空间,数据分段处理,设置更大的程序执行时间
2>用完的数据unset释放内存
场景1:处理大量日志文件
场景2:一次从数据库读取的数据太大

2.处理的数据量不大,但是你php.ini配置的内存大小设置太小
1>、修改php.ini
memory_limit = 128
这种方法需要重启服务器,很显然,此方法对虚拟机有限制。
2>、通过ini_set函数修改配置选项值
ini_set (‘memory_limit’, ‘128M’)
3.逻辑出现死循环
时间换空间,空间换时间概念理解
算法需要考虑时间、空间复杂度,一般这两者是不可皆得,要么内存占用比较小但是运行时间长,要么算的比较快但是空间占用大。
在一些特定时候会极力优化其中一方,这时候就是牺牲另一方来达到目的。

设置程序执行时间
1、在php.ini里面设置
max_execution_time = 120;
2、通过PHP的ini_set函数设置
ini_set(“max_execution_time”, “120”);
3、通过set_time_limit 函数设置
set_time_limit(120);
以上几个数字设置为0则无限制,脚本会一直执行下去,直到执行结束。
 

本文标题为:Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 85 bytes)

基础教程推荐