#php #api #transactions
#php #API #транзакции
Вопрос:
Скажем, например, я пытаюсь инициализировать календарь с повторяющимися событиями.
try {
$api->createCalendar()
$api->createCalendarSettings()
$api->createRecurringEvent()
} catch (Exception $exception) {
}
Я хочу, чтобы эти 3 вызова действовали как единое целое. Если какой-либо из них завершается с ошибкой, ранее успешные действия должны быть отменены. Есть ли разумный способ сделать это, кроме как вызывать обратное действие для каждого действия в блоке catch? Проблема с этим заключается в том, что я не знаю, какие действия уже завершились успешно, и обратные действия также могут привести к сбою.
Комментарии:
1. в PHP нет «транзакций». Это чисто концепция базы данных. если вы хотите выполнить «откат» в php, вам придется отменить каждый шаг самостоятельно. и учтите, что многие вещи НЕЛЬЗЯ отменить. например
unlink('foo.txt')
, их нельзя просто волшебным образом «отменить».