Код: Выделить всё
$transaction = Yii::app()->db->beginTransaction();
$cnt=$model->getTotalCards(); //здесь обычный select из кучи таблиц
if($cnt!=0) {
//куча вычислений, с изменением балансов, запросом к платным апи и т.п. В итоге всего этого $model->getTotalCards() вернет уже другой результат
}
$transaction->commit();
Т.е. надо как-то заблокировать внутри транзакции чтение, чтобы следующий запрос ждал завершения предыдущей транзакции, и только потом делал выборку. Это реально?
Я вчера весь вечер курил маны, но нашел только необходимость в конфиге мускла (конечно, innoDB) прописать, transaction-isolation = serializable . Но это не помогло.
Спасибо =)
P.S. Предложение изменить архитектуру не приемлимо, потому что в примере очень упрощенная версия, там много нюансов. Да и встречается это в нескольких местах - все переделывать очень долго - надо общее решение.