这真的很奇怪。当尝试打开特定记录(主要id = 1)的视图(查看和编辑)时,我得到“致命错误允许内存大小的字节耗尽”。
错误消息是:
Fatal error: Allowed memory size of 134217728 bytes exhausted
(tried to allocate 79 bytes) in
/myappname/lib/Cake/Model/Datasource/Database/Mysql.php
on line 276
这些视图直接来自Cake Bake All视图,它们适用于所有其他记录(例如id = 2及以上)。
我的本地开发环境和prod托管的环境都存在这个问题。
问题似乎是记录本身,例如记录的内容。
但是,我可以从表中选择*,其中id = 1,dev& amp; prod数据库。我还将记录id = 1复制到MySQL的新记录中。这个新记录在视图中工作没问题。
为了尝试调试,我把:
pr($helperClass);die
在第276行的Mysql.php之前发生错误。调试消息是:
Error: syntax error, unexpected '$resultRow' (T_VARIABLE)
File: myappname\lib\Cake\Model\Datasource\Database\Mysql.php
Line: 277
我知道'允许的内存大小耗尽'错误表明内存的php.ini值不适用于发生的任何事情,但不是增加它我想确定是什么导致了这一点。
任何可能导致此问题的想法以及调试'意外$ resultRow'消息的内容是什么?任何其他调试建议也欢迎。
不要认为代码会有所帮助。这是一个简单的jane烘焙应用程序,有4个表:
国家 用户
CakePHP模特:
CakePHP视图控制器:
public function view($id = null) {
if (!$this->Country->exists($id)) {
throw new NotFoundException(__('Invalid country'));
}
$options = array('conditions' => array('Country.' . $this->Country->primaryKey => $id));
$this->set('country', $this->Country->find('first', $options));
}
CakePHP查看:
<div class="countries view">
<h2><?php echo __('Country'); ?> - <?php echo $this->Html->link(__('Edit'), array('action' => 'edit', $country['Country']['id'])); ?></h2>
<dl>
<dt><?php echo __('Id'); ?></dt>
<dd>
<?php echo h($country['Country']['id']); ?>
</dd>
<dt><?php echo __('Country'); ?></dt>
<dd>
<?php echo h($country['Country']['country']); ?>
</dd>
<dt><?php echo __('Country Code'); ?></dt>
<dd>
<?php echo h($country['Country']['country_code']); ?>
</dd>
</dl>
</div>
答案 0 :(得分:0)
这个问题是我还没有(有目的地)整合到应用程序中的另一个表。
每个国家/地区有1000个记录。国家/地区pk id = 1比其他国家/地区更多。
在某些时候,我已将此其他表添加到Country模型的hasMany关系中。
所以CakePHP正在将其他桌面记录拉到场景背后,这就是内存的增加。
直到现在它还没有成为问题,所以这个其他表现在必须有更多的记录,并且只是倾斜了比例。
答案 1 :(得分:0)
您可以在控制器操作中使用
来增加内存限制ini_set('memory_limit','256M'); 您还可以增加超时限制
参数或者set_time_limit(0);无限