Для управления параллелизмом - это обеспечение того, что данные, сохраненные в базе данных, не устарели или уже отредактированы каким-либо другим пользователем - в моем приложении CakePHP я использую атрибут modified
в моих функциях редактирования. Ниже приведен фрагмент кода, который находится в моем контроллере.Управление параллелизмом данных в CakePHP - Поведение/Контроллер/Модель?
$this->MyModel->recursive = -1;
$event = $this->MyModel->findById($id);
$requestTimeStamp = new DateTime($this->request->data['MyModel']['modified']);
$dbTimeStamp = new DateTime($event['MyModel']['modified']);
if ($requestTimeStamp < $dbTimeStamp) {
$response = array(
'success' => false,
'id' => $id,
'message' => 'A concurrency error occurred while trying to save. Please try again');
echo json_encode($response);
exit;
} else {
//... continue processing
}
Этот код работает отлично - но, как я стараюсь, чтобы оптимизировать его по моей заявке, я пытаюсь выяснить, где лучше разместить. Является ли это лучше всего в моем классе AppModel
или лучше создать Behavior
для того же самого или он лучше всего останется в контроллере? Я полагаю, что идеальным вариантом будет рассмотрение производительности и минимизация затрат на загрузку класса, а также накладные расходы на доступ к базам данных.
Кто-нибудь сталкивался с этой проблемой раньше? Мысли/предложения оценили.