首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

读取session中数组有关问题

2013-12-28 
读取session中数组问题本帖最后由 zl2727 于 2013-12-26 16:50:24 编辑$query select * from #@__arctyp

读取session中数组问题
本帖最后由 zl2727 于 2013-12-26 16:50:24 编辑

$query ="select * from #@__arctype where isbaike=1";
        $this->dsql->Execute("bkarry",$query);
$bkarry=array();
session_start();
if(!session_is_registered("bkarry")){

while($row2 = $this->dsql->GetArray("bkarry"))
        {
$bkarry[]=$row2;
}
$bkarry2=serialize($bkarry);
$_SESSION['bkarry']=$bkarry2;


}else{

$bkarry=unserialize($_SESSION['bkarry']);
}
//unset($_SESSION['bkarry']);   
//var_dump($bkarry);

    while($row = $bkarry)
        {var_dump($row);

        }
exit();

从session中取出数组后就循环不了了  报内存不足
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1176 bytes)

大侠们帮帮忙 看看哪有问题  或者能更简单写 

我想实现    查询数据有3000多条 每次都查就太慢了 所以想存到session中调用不用每次都查 
[解决办法]
问题不在 session 的存取,而在读取后的处理!
这是一个死循环
while($row = $bkarry) {
  var_dump($row);
}

但这不会引起内存不足,你应该指出出现内存不足时的地方


session_start();
$query ="select * from #@__arctype where isbaike=1";
if(! isset($_SESSION['bkarry'])) {
  $this->dsql->Execute("bkarry",$query);
  while($row2 = $this->dsql->GetArray("bkarry"))
  {
    $_SESSION['bkarry'][] = $row2;
  }
}
$bkarry =& $_SESSION['bkarry'];

session 本身就做了序列化处理,无需再自己做序列化。并且 session 序列化后的串比 serialize 的要短许多
令 $bkarry 为 $_SESSION['bkarry'] 的引用,又可减少一半内存

热点排行