session 获取数组 php,读取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'] 的引用,又可减少一半内存

相关文章

相关视频

网友评论

文明上网理性发言,请遵守 新闻评论服务协议我要评论

47d507a036d4dd65488c445c0974b649.png

立即提交

专题推荐064df72cb40df78e80e61b7041ee044f.png独孤九贱-php全栈开发教程

全栈 100W+

主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

7dafe36c040e31d783922649aefe0be1.png玉女心经-web前端开发教程

入门 50W+

主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

04246fdfe8958426b043c89ded0857f1.png天龙八部-实战开发教程

实战 80W+

主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值