Валидация

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
pochchta
Сообщения: 17
Зарегистрирован: 2020.07.15, 09:28

Валидация

Сообщение pochchta »

Здравствуйте.
Возник такой вопрос.
Например, в БД есть таблица №1 и таблица - словарь (с полем deleted для мягкого удаления). При мягком удалении записи в словаре нужно проверить, используется ли запись в таблице №1. Допустим не используется.
1) Валидация на мягкое удаление записи в словаре ошибку не выдала
2) Затем мы успеваем использовать эту запись в таблице №1.
3) После этого мягко удаляем запись из словаря.
4) Имеем используемую в таблице №1 удаленную запись.

Возможна ли такая ситуация и как она решается?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Валидация

Сообщение samdark »

Возможна. Решается или mutex-ом или изменением логики (чтобы ничего страшного от такой записи не было и вело всё себя так, как буд-то её нет). Ну и чтобы подчищать ещё крон или что-то такое можно (но не факт что нужно).
pochchta
Сообщения: 17
Зарегистрирован: 2020.07.15, 09:28

Re: Валидация

Сообщение pochchta »

Спасибо.
Попробовал 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;
        }
    }
Открываю одновременно две страницы в браузере и в каждой задержка 30 секунд, причем по очереди: сначала в первой 30, потом во второй 30.
Почему не одновременно?
ПК: одноядерный, Win7x32, OSPanel - Apache-PHP-7, PHP-7.1
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Валидация

Сообщение ElisDN »

.
Последний раз редактировалось ElisDN 2020.12.25, 11:35, всего редактировалось 1 раз.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Валидация

Сообщение samdark »

Почему не одновременно?
В этом весь смысл mutex-а.
pochchta
Сообщения: 17
Зарегистрирован: 2020.07.15, 09:28

Re: Валидация

Сообщение pochchta »

Всем спасибо, разобрался.
Ответить