УрокПроверено 2026Локальный прогресс

Транзакция и атомарность сценария

Транзакция объединяет изменения: либо применяются все, либо ни одно.

$pdo->beginTransaction();

Граница

Открывайте транзакцию вокруг предметного сценария, например создания заказа и резервирования остатков, а не вокруг всего HTTP-запроса.

Шаблон

<?php
$pdo->beginTransaction();
try {
    // изменения
    $pdo->commit();
} catch (Throwable $e) {
    $pdo->rollBack();
    throw $e;
}

Внешние системы

Email или HTTP API не откатываются вместе с SQL. Для надёжной доставки используют outbox или отдельную компенсирующую операцию.

Ошибка

DDL может вести себя по-разному между СУБД. Проверяйте документацию драйвера, а не предполагайте одинаковый rollback миграции.

Задание

Определите транзакционную границу для перевода денег между двумя счетами.

Локальный прогресс

Закрепите материал

Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.

Связанные материалы

Источники и проверка

  • PHP Documentation Group — структурный источник, без внешней ссылки

Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.

Данные этого сервиса

Настройки cookie и локальных данных

Аналитика

Текущий статус: не выбран. До согласия обе аналитические системы не загружаются.

Локальные данные

Удаление затрагивает только ключи PHP-сервиса в этом браузере и требует подтверждения.

Политики

Политика конфиденциальности · Политика использования файлов cookie