Здравствуйте.
Возник такой вопрос.
Например, в БД есть таблица №1 и таблица - словарь (с полем deleted для мягкого удаления). При мягком удалении записи в словаре нужно проверить, используется ли запись в таблице №1. Допустим не используется.
1) Валидация на мягкое удаление записи в словаре ошибку не выдала
2) Затем мы успеваем использовать эту запись в таблице №1.
3) После этого мягко удаляем запись из словаря.
4) Имеем используемую в таблице №1 удаленную запись.
Возможна ли такая ситуация и как она решается?
Валидация
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Валидация
Возможна. Решается или mutex-ом или изменением логики (чтобы ничего страшного от такой записи не было и вело всё себя так, как буд-то её нет). Ну и чтобы подчищать ещё крон или что-то такое можно (но не факт что нужно).
Нравится Yii? Давайте сделаем его лучше!.
Re: Валидация
Спасибо.
Попробовал fileMutex, но проверить его работу не могу.
Открываю одновременно две страницы в браузере и в каждой задержка 30 секунд, причем по очереди: сначала в первой 30, потом во второй 30.
Почему не одновременно?
ПК: одноядерный, Win7x32, OSPanel - Apache-PHP-7, PHP-7.1
Попробовал fileMutex, но проверить его работу не могу.
Код: Выделить всё
public function actionMutex() {
if (\Yii::$app->mutex->acquire('123', 100)) {
echo PHP_EOL;
sleep(30);
\Yii::$app->mutex->release('123');
} else {
echo 'process is locked' . PHP_EOL;
}
}
Почему не одновременно?
ПК: одноядерный, Win7x32, OSPanel - Apache-PHP-7, PHP-7.1
Re: Валидация
.
Последний раз редактировалось ElisDN 2020.12.25, 11:35, всего редактировалось 1 раз.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Валидация
В этом весь смысл mutex-а.Почему не одновременно?
Нравится Yii? Давайте сделаем его лучше!.
Re: Валидация
Всем спасибо, разобрался.