• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

读取session中数组问题

php 搞代码 3年前 (2022-01-23) 13次浏览 已收录 0个评论
文章目录[隐藏]

本帖最后由 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中调用不用每次都查

回复讨论(解决方案)

内存不够用
修改可用内存有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);}

但这不会引起内存不足,你应该指出出本@文来源[email protected]搞@^&代*@码网(搞代gaodaima码现内存不足时的地方

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){} 

这样读就可以了 谢谢版主的回复


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:读取session中数组问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址