1. В таблицу с пользователями добавить поле lastActionTime с типом данных timestamp
2. В модели, которую сохраняете в экшене:
protected function afterSave() {
	if (parent::afterSave()) {
		$user = User::model()->findByPk(Yii::app()->user->id);
		$user->lastActionTime = date('Y-m-d H:i:s');
		$user->save();
		return true;
	} else return false;
}
3. В контроллере:
public function filters() {
	return array(
		'LastActionTime + index'
	);
}
public function filterLastActionTime($filterChain) {
	$user = User::model()->findByPk(Yii::app()->user->id);
	if ($user->lastActionTime > date('Y-m-d H:i:s', time() - 60 * 30)) { // 30 минут
		Yii::app()->user->setFlash('error', 'Вы уже выполняли это действие меньше чем полчаса назад :(');
		$this->redirect(Yii::app()->homeUrl);
	}
	$filterChain->run();
}
Не забудьте заменить index на название своего экшена.