读取session中数组问题
程序员文章站
2024-01-30 13:33:34
...
本帖最后由 zl2727 于 2013-12-26 16:50:24 编辑
从session中取出数组后就循环不了了 报内存不足
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1176 bytes)
大侠们帮帮忙 看看哪有问题 或者能更简单写
我想实现 查询数据有3000多条 每次都查就太慢了 所以想存到session中调用不用每次都查
但这不会引起内存不足,你应该指出出现内存不足时的地方
session 本身就做了序列化处理,无需再自己做序列化。并且 session 序列化后的串比 serialize 的要短许多
令 $bkarry 为 $_SESSION['bkarry'] 的引用,又可减少一半内存
$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中调用不用每次都查
回复讨论(解决方案)
内存不够用
修改可用内存有2中方法:
1、直接修改php.ini
memory_limit=128M
2、在入口文件添加
@ini_set('memory_limit', '128M');
但是到底是什么数据3000多条都要存到session,而且你的代码session里只存了一条记录 还内存不够用 是不是数据库建立的有问题
session不能这么用
数据应该放在KEY-VALUE数据库中。
问题不在 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'] 的引用,又可减少一半内存
查询太慢,你可以优化查询sql,写入session的值,之前可以serialize序列化。
foreach($bkarry as $k=>$row){}这样读就可以了 谢谢版主的回复
上一篇: 文件操作的问题
推荐阅读
-
初学者问个有关问题,如何读取sql返回结果中的数据
-
PHP中Session引起的脚本阻塞问题解决办法_PHP
-
php中session退出登陆问题
-
php 中遍历数组时使用引用出现的问题
-
详解springboot中redis的使用和分布式session共享问题
-
程序员 - thinkphp模板问题,如何在tp框架自己的模板中判断数组是否为空?
-
PHP tclip扩展调用opencv从内存中读取及解析图片数据的问题
-
session存储在数据库和memcache中的有关问题
-
解决php中Cannot send session cache limiter 的问题的方法_PHP教程
-
php中session退出登陆问题_PHP