• PHP PDO Как добиться синхронной работы COMMIT?

    @sir_genry Автор вопроса
    Если кому-то будет интересно, то сообщаю, что использование PDOStatement::execute вместо PDO::commit в моем случае решило проблему.
    На примере фреймворка yii2/
    Было:
    $transaction = \Yii::$app->db->beginTransaction();
    try {
        ...
        $transaction->commit();
    } catch (\Exception $exception) {
        $transaction->rollBack();
        throw $exception;
    }

    Стало:
    \Yii::$app->db->createCommand('BEGIN TRANSACTION')->execute();
    try {
        ...
        \Yii::$app->db->createCommand('COMMIT TRANSACTION')->execute();
    } catch (\Exception $exception) {
        \Yii::$app->db->createCommand('ROLLBACK TRANSACTION')->execute();
        throw $exception;
    }

    Не совсем конечно красиво, и до конца не уверен, что это работает во всех случаях. Но все равно лучше чем искусственная задержка
    Ответ написан
    Комментировать