2011-12-09 28 views
-3

我遇到问题。当我循环通过一系列基于年和月 的sql选择,并且我在表中得到一个命中时,内存使用情况分析!!!!PHP Codeigniter Oracle内存不足

我在Centos机器上运行php 5.1,Oracle 10.1,Codeigniter 2.02。

下面是一些含有日志输出内存使用情况:

INFO - 2011-12-09十六点10分26秒 - > LOOP:NF:28年:2010个月: '01' MEM设置: 1788664

INFO - 2011-12-09 16时10分27秒 - >结果计数IS:0

INFO - 2011-12-09 16时10分27秒 - > LOOP:NF:28 YEAR :2010 MONTH:'02'mem set:1793128

INFO - 2011-12-09 16:10:28 - >结果是:0

INFO - 2011-12-09 16时10分28秒 - > LOOP:NF:28年:2010月: '03' MEM设置:1793728

INFO - 2011-12-09 16:10 :30 - >结果计数IS:0

INFO - 2011-12-09 16点10分三十〇秒 - > LOOP:NF:28年:2010个月: '04' MEM设置:1794328

INFO - 2011-12-09 16:10:32 - >结果计数是:0

INFO - 2011-12-09 16:10:32 - > LOOP:NF:28 YEAR:2010 MONTH:' 05'mem set:1794928

INFO - 2011-12-09 16点10分33秒 - >结果计数IS:0

INFO - 2011-12-09 16点10分33秒 - > LOOP:NF:28年:2010月: '06' MEM设置:1795528

INFO - 2011-12-09 16时10分35秒 - >结果计数IS:0

INFO - 2011-12-09 16时10分35秒 - - > LOOP:NF:28年:2010个月: '07' MEM设置:1796128

INFO - 2011-12-09十六点十分37秒 - >结果计数IS:0

INFO - 2011-12-09 16:10:37 - > LOOP:NF:28 YEAR:2010 MONTH:'08'mem set:1796728

INFO - 2011-12-09 16:10:38 - - >结果计数IS:0

INFO - 2011-12-09 16点10分38秒 - > LOOP:NF:28年:2010个月: '09' MEM设置:1797392

INFO - 2011 -12-09 16:10:45 - >结果是:224162

INFO - 2011-12-09 16:10:45 - > LOOP:NF:28 YEAR:2010 MONTH:'10'mem设置:486504280

NF =领域

的数量因此,如果数据在表中的行是1000字节总数(它实际上少了很多的) ,我有224162条记录, 然后224162×1000 = 224的内存兆。让我们稍微讨论一下开销。

我不应该得到DOUBLE使用的内存量!

我的最大内存设置为512M。但这不是问题。 问题是在内存使用expolosion。

我与查询的结果这样做:

foreach($query->result_array() as $row) 

我在做什么错?

我该如何解决?

+1

封闭SQL,请 – ajreal

回答

0

我在回答我自己的问题。似乎codeigniter数据库类 确实是奇怪的事情。我不知道究竟是什么。它看起来像是将整个结果集拖到内存中。

我的解决办法:

我设法得到的东西扔了所有的笨数据库类 代码和再编程问题的模型 PHP OCI8代码工作。记忆永远不会超过1.6兆。

唉...

最好的问候,

菲尔