首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php允许的内存在while循环上

问php允许的内存在while循环上
EN

Stack Overflow用户
提问于 2013-09-08 15:40:46
回答 2查看 656关注 0票数 0

我有一个while循环:

代码语言:javascript
复制
// Upgraded Checking
if($ir['upgraded'] < time()) $upgsql = " AND `aUpgraded`='0'"; 
else $upgsql = " AND ((`aUpgraded` = 1 AND `aUpgradedType` = '{$ir['upgname']}' AND `aUpgradedType` != '') OR (`aUpgraded` = 1 AND `aUpgradedType` = '') OR `aUpgraded` = 0)";

$ess=mysql_query("SELECT * FROM ads WHERE aClicksLeft3>0 AND aPaused='0' AND aApproved>0 ".$upgsql."");


while($extendedData == mysql_fetch_assoc($ess)){

$contents.="hey!!!";



};//End While

每当我运行它时,我都会得到以下错误:允许内存大小为134217728字节,耗尽了

我不知道为什么会使用这么多内存来执行why循环。这只是一个简单的循环。

有人知道为什么会这样吗?我的脚本中有大量的while循环,而且我以前从未遇到过这个错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-08 15:44:31

当您将$extendedData与mysql的结果进行比较时,您将得到一个无限循环,而不是分配它。循环不断地将数据添加到$contents变量中,在无限循环中的某个点,它将耗尽内存。

试一试

代码语言:javascript
复制
while( ($extendedData = mysql_fetch_assoc($ess)) ){
   $contents.="hey!!!";
};//End While

并考虑使用mysqli函数而不是折旧的mysql函数。

票数 2
EN

Stack Overflow用户

发布于 2013-09-08 15:44:24

小心http://in1.php.net/manual/en/ini.core.php#ini.memory-limit

代码语言:javascript
复制
ini_set('memory_limit', '-1');
while($extendedData = mysql_fetch_assoc($ess))//should be single equal to sign here
{
$contents.="hey!!!";
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18685517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档