* 关于YII update的效率问题 *





	public function actionUpdate($id)

	{

		$model=$this->loadModel($id);


		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


		if(isset($_POST['User']))

		{

			$model->attributes=$_POST['User'];

			if($model->save())

				$this->redirect(array('view','id'=>$model->user_id));

		}


		$this->render('update',array(

			'model'=>$model,

		));

	}






请教一下, 上面代码: $model=$this->loadModel($id); 这句话会被执行几次?

我认为是2次:

  1. 请求这个控制器动作, 显示视图.

  2. 保存时, 又执行一次.

这样会不会在效率上会大打折扣? 在数据量巨大时.

save不会执行loadModel

不明白! 希望不会吧, 下次做做实验.

从安全上考虑,最好执行下检测。

如果考虑大负荷的update 或者insert, 建议采用sql重组. 检测完后,一次执行到位.

楼主说的没错,因为两个请求都是此动作,按顺序执行的话,肯定都会执行loadModel()的。

嗯, 不知道java怎么处理的. 都说PHP不能常连接. 缓冲应当也不算常连接吧?

我想也是, 安全上应当重新load一次, 不然大家可以随便修改别的行记录了.

不太明白你说的SQL重组, 这个东西的流程是什么样的? 可以稍微介绍一下吗?