允许的内存大小为100663296字节耗尽(试图分配32个字节)

时间:2016-03-29 06:19:39

标签: php yii

在yii中使用with命令会给出内存错误。当我使用3个表时,它可以正常工作。当我添加第4个然后它开始在服务器上给出错误。在本地它可以正常工作

$criteria->with = array('users0','businessUnits','skills','questions');
$criteria->together = true;

$models = Company::model()->findAll($criteria);

它出错Allowed memory size of 100663296 bytes exhausted (tried to allocate 32 bytes) in

1 个答案:

答案 0 :(得分:0)

问题 - 致命错误:允许的内存大小为33554432字节耗尽

致命错误的原因:X字节的允许内存大小耗尽

最近我的一个php应用程序遇到了这个错误。像任何其他程序员一样,我想用谷歌搜索这个问题。

经过一些研究后,我发现由于某种原因,我的脚本占用了所有的内存空间。正如我在共享主机&服务器管理员已禁用ini_set。

除了找到问题的根本原因之外别无其他选择。

不正确的解决方案:增加内存等解决方案并不是正确的解决方案。通过这个你允许你的坏脚本消耗所有的内存。

那么如何解决这个问题?

假设您正在创建一个携带如此多数据的变量。在循环中,您将重新分配值。

所以你将过多的数据重新分配给同一个变量,虽然它的值正在更新,但是当变量正在使用时,内存不会被释放。垃圾收集器没有清除那个内存。

正确的解决方案:为避免允许的内存大小耗尽错误,您可以将值设置为null。通过这样做,你告诉垃圾收集器保存在内存中的那个变量不是必需的&释放。垃圾收集将立即清除空间。