PHP PDO Как добиться синхронной работы COMMIT?
Для приложения commit синхронен. Если вы вышли из commit() - значит транзакция уже зафиксирована.
Проверяйте код приложения #2. Может быть вы уже в транзакции и потому не видите изменения. Может быть вы подключаетесь к асинхронной реплике
Если кому-то будет интересно, то сообщаю, что использование 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;
}
Не совсем конечно красиво, и до конца не уверен, что это работает во всех случаях. Но все равно лучше чем искусственная задержка