读取session中数组问题
本帖最后由 zl2727 于 2013-12-26 16:50:24 编辑
从session中取出数组后就循环不了了 报内存不足
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1176 bytes)
大侠们帮帮忙 看看哪有问题 或者能更简单写
我想实现 查询数据有3000多条 每次都查就太慢了 所以想存到session中调用不用每次都查
$query ="select * from #@__arctype where isbaike=1";<br> $this->dsql->Execute("bkarry",$query);<br> $bkarry=array();<br> session_start();<br> if(!session_is_registered("bkarry")){<br> <br> while($row2 = $this->dsql->GetArray("bkarry"))<br> {<br> $bkarry[]=$row2;<br> }<br> $bkarry2=serialize($bkarry);<br> $_SESSION['bkarry']=$bkarry2;<br> <br> <br> }else{<br> <br> $bkarry=unserialize($_SESSION['bkarry']);<br> }<br> //unset($_SESSION['bkarry']); <br> //var_dump($bkarry);<br> <br> while($row = $bkarry)<br> { var_dump($row);<br> <br> }<br> exit();从session中取出数组后就循环不了了 报内存不足
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1176 bytes)
大侠们帮帮忙 看看哪有问题 或者能更简单写
我想实现 查询数据有3000多条 每次都查就太慢了 所以想存到session中调用不用每次都查
分享到: 更多
------解决方案--------------------
问题不在 session 的存取,而在读取后的处理!
这是一个死循环
但这不会引起内存不足,你应该指出出现内存不足时的地方
session 本身就做了序列化处理,无需再自己做序列化。并且 session 序列化后的串比 serialize 的要短许多
令 $bkarry 为 $_SESSION['bkarry'] 的引用,又可减少一半内存
------解决方案--------------------
问题不在 session 的存取,而在读取后的处理!
这是一个死循环
while($row = $bkarry) {<br> var_dump($row);<br>}但这不会引起内存不足,你应该指出出现内存不足时的地方
<br>session_start();<br>$query ="select * from #@__arctype where isbaike=1";<br>if(! isset($_SESSION['bkarry'])) {<br> $this->dsql->Execute("bkarry",$query);<br> while($row2 = $this->dsql->GetArray("bkarry"))<br> {<br> $_SESSION['bkarry'][] = $row2;<br> }<br>}<br>$bkarry =& $_SESSION['bkarry'];<br>session 本身就做了序列化处理,无需再自己做序列化。并且 session 序列化后的串比 serialize 的要短许多
令 $bkarry 为 $_SESSION['bkarry'] 的引用,又可减少一半内存









