1

Yii の CRUD ジェネレーター (gii) を使用して、生成されたフォームに若干の変更を加えた後、次のエラー メッセージが表示されます。

[14-Jul-2012 05:12:58 UTC] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 40 bytes) in D:\apps\trulabel\framework\db\ar\CActiveRecord.php on line 1794 

item テーブルから 22,000 行を取り込もうとして、問題を絞り込んだと思います。問題なく処理できると思っていたので、私には少し奇妙に思えます。何がうまくいかないのか、またはそれを回避する方法について何か提案はありますか?

形:

<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'spec-definition-form',
    'enableAjaxValidation'=>false,
)); ?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>

    <?php echo $form->errorSummary($model); ?>

        <div class="row">
                <?php echo $form->labelEx($model,'labelTypeId'); ?>
        <?php echo $form->dropDownList($model, 'labelTypeId', CHtml::listData(LabelType::model()->findAll(), 'id', 'name')); ?>
                <?php echo $form->error($model,'labelTypeId'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'customer'); ?>
        <?php echo $form->dropDownList($model, 'customer', CHtml::listData(Tblarcustomer::model()->findAll(), 'Customer', 'Name')); ?>
        <?php echo $form->error($model,'customer'); ?>
    </div>

        <div class="row">
        <?php echo $form->labelEx($model,'item'); ?>
        <?php echo $form->dropDownList($model, 'item', CHtml::listData(TblimItem::model()->findAll(), 'Item', 'Item')); ?>
        <?php echo $form->error($model,'item'); ?>
    </div>

    <div class="row buttons">
        <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
    </div>

<?php $this->endWidget(); ?>

</div><!-- form -->
4

2 に答える 2

2

PHPのメモリ制限を増やすと、問題が解決します。

次を使用してメモリを増やすことができます。

ini_set('memory_limit','16M');
于 2012-07-16T05:07:16.330 に答える
1

デフォルトでは、yiiはデバッグモードで実行されます。デバッグモードでは、内部ログを生成するために、phpで割り当てられたメモリからより多くのメモリを消費します。

デフォルト値の「YII_DEBUG」はfalseであるため、行にコメントを付けることで、アプリのルート(index.php)にあるyiiエントリストリップからそれを引き立たせることができます。

// remove the following lines when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
于 2012-07-14T11:29:43.000 に答える