Я пытаюсь внедрить кредитную систему в приложении, используя Laravel 4.2. Я планирую хранить кредит пользователя в таблице. Поскольку я хочу, чтобы пользовательский кредит был свободен от условий гонки, я исследовал Интернет для правильной реализации. В некоторых ответах говорилось, что если бы я использовал транзакции Laravel + экземпляр MySQL с InnoDB, условий гонки не было бы. В некоторых ответах мне предлагалось использовать lockForUpdate, но я боюсь, что неправильное использование может привести к тупику.
Как мне это реализовать? Я в безопасности, если я просто использую транзакции?
Я просмотрел исходный код и обнаружил, что транзакции Laravel 4.2 основаны на транзакциях PDO (например, PDO :: beginTransaction). Использование транзакций PDO с MySQL имеет этот
такое поведение. Поскольку правила ACID соблюдаются, я предполагаю, что я в безопасности для своего варианта использования.
Других решений пока нет …