Дело в том, что есть несколько пользователей, которые пишут данные в БД пачками.
Если писать строго по очереди, запуская запись следующего массива данных после завершения прошлой записи, то в БД пишутся все данные.
Если писать асинхронно, когда пакеты данных "встречаются" на входе в БД в момент записи, происходит потеря данных, каждый раз разных и в разных количествах.
Пытался решить вопрос через очереди, но они тут, почему-то, не помогают, делал их так:
Создаётся очередь под своим pid. Далее эту очередь наполняют запросы пользователей, которые асинхронно кликают на кнопку и пытаются записать данные в БД.
В логах видно, что очередь отрабатывается, запись в БД идёт, но это не помогает справиться с потерей данных.
Вопрос №1:
Если открывать несколько очередей, каждую со своим pid, поможет ли это исправить ситуацию?
Если да, то как в коде выполнить консольную команду
Код: Выделить всё
yii queue/listen
Как выполнять консольные команды из кода не совсем понятно.
Вопрос №2:
Как, если не через очереди, решать проблему множественного доступа на запись в БД средствами фреймворка? Не нашёл информацию по блокировке таблиц через activeRecord или Query или как-то ещё.
Спасибо.