Транзакции и блокировки на чтение

272
25 марта 2017, 02:11

Ситуация такая:

$transaction = Yii::app()->db->beginTransaction();
$condition=$model->getCondition(); //обычный select из кучи таблиц
if($condition) {
//... куча функций, апи вызовов, изменений баланса пользователя, в результате $model->getCondition() уже не вернет прежнего результата
}
$transaction->commit();

Но если юзер делает 10-100 запросов одвновременно, то код внутри "if($condition){}" будет выполняться несколько раз, что неприемлемо. Т.о., мне нужен лок на чтение внутри транзакции, так чтобы второй запрос пользователя ждал, пока завершится первая транзакция, и только потом получил ответ на запрос $model->getCondition() - уже обновленный ответ. Я кучу всего перечитал из манов, и нашел только то, что нужно прописать "transaction-isolation = serializable" в конфиге мускла. Но это не помогло =( Соответственно, вопрос: что делать?

P.S. таблицы innodb, конечно.

READ ALSO
Почему возвращает html, который вне блока php?

Почему возвращает html, который вне блока php?

По идее блок html должен попадать под условие if и выполняться - if trueВ данном случае - false, но html возвращает

189
ошибка в opencart в чем может быть дело?

ошибка в opencart в чем может быть дело?

PHP Fatal error: require_once() [functionrequire]: Failed opening required '/home/a/set/public_html/system/startup

216
Вывод данных из БД используя AJAX

Вывод данных из БД используя AJAX

Доброго времени сутокСкажу сразу, что новичок в AJAX

254
HTML5+CSS+PHP форма

HTML5+CSS+PHP форма

У меня есть фото с работами и реализовано это вот так:

180