[PHP]改了 memory_limit=1024M 还是报错: Fatal error: Out of memory (allocated 80740352)...

jsyang888 发布于 2013/03/15 14:22
阅读 5K+
收藏 0

【DevOps必读】产品经理与程序员之间如何破局?>>>

php.ini 已加上  "memory_limit = 1024M"。php 页首也加了 "ini_set('memory_limit', '1024M')"。

var_dump(ini_get('memory_limit'));和phpinfo() 证实上限已经到 1024M

这php只跑一句sql(2表join,数据分别约3百万),还是 报错 "...allocated 80740352",这表示只有分到 77MB啊! (=80740352除以1024再除以1024)。

还有哪里设置限制住了内存分配?  http.conf ? 还是windows xp 系统里面?请高手支招!!

(电脑内存有3G。只需在命令行跑这php。该句sql已经无法再简化。就一句sql,无法用到unset来释放内存。这sql 直接在mysql操作没有问题。)

以下是问题补充:

@jsyang888:code 贴在下面, 这里贴编码,不好看 (2013/03/15 18:16)
加载中
0
狂飙的小蜗牛
狂飙的小蜗牛
可能是apache的问题吧
0
我不叫大脸猫
我不叫大脸猫
能把代码和phpinfo相关部分贴一下么
0
小美玲
小美玲
cli执行试试.
0
Tuesday
Tuesday

php 最大支持128MB吧,

memory_limit上面描述有讲.
 

我不叫大脸猫
我不叫大脸猫
可以通过修改配置增加的,于老板
0
南湖船老大
南湖船老大
PHP代码里有foreach吧,用了迭代了吧。。你还是贴PHP和MYSQL语句吧
0
Tuesday
Tuesday
Maximum amount of memory a script may consume (128MB)
南湖船老大
南湖船老大
不是这么理解吧
0
灵魂架构师
灵魂架构师
这个问题遇到过,是你循环次数超过了最大的1000次 你潜逃循环了吧,优化下性能吧。
0
Tuesday
Tuesday

http://www.oschina.net/code/snippet_998019_19249

可以参考一下这篇.

$runcount = $memory / (strlen($string)+1); // 为什么+1? 因为需要留点内存给其它变量或者计算式.

可能算法不对, 你可以不+1, 将$runcount*0.99也可以. 总要留点内存给其它变量.

0
jsyang888
jsyang888

引用来自“徐同乐”的答案

这个问题遇到过,是你循环次数超过了最大的1000次 你潜逃循环了吧,优化下性能吧。

说了,您没注意看,就一句SQL:

SELECT in.ID, in.amt, out.amt

FROM

    (in  JOIN  out

      ON

      in.ID=out.ID

     )
jsyang888
jsyang888
回复 @徐同乐 : 也是办法:) 想过真没答案只好用limit,在程序里分一段一段的搬到光。但这很没必要啊,平白增加复杂度,资源也没用到。 想找到可以突破77M的限制。
灵魂架构师
灵魂架构师
限制下返回的结果数试试
灵魂架构师
灵魂架构师
那就不晓得了,此类错误我就做数的时候循环嵌套出现过。
返回顶部
顶部