本帖最后由 zl2727 于 2013-12-26 16:50:24 编辑

解决方案 »

  1.   

    内存不够用 
    修改可用内存有2中方法:
    1、直接修改php.ini 
    memory_limit=128M
    2、在入口文件添加
    @ini_set('memory_limit', '128M');
    但是到底是什么数据3000多条都要存到session,而且你的代码session里只存了一条记录 还内存不够用   是不是数据库建立的有问题
      

  2.   

    session不能这么用
    数据应该放在KEY-VALUE数据库中。
      

  3.   

    问题不在 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'] 的引用,又可减少一半内存
      

  4.   

    查询太慢,你可以优化查询sql,写入session的值,之前可以serialize序列化。
      

  5.   

    foreach($bkarry as $k=>$row){}  这样读就可以了 谢谢版主的回复