Как мне эмулировать поведение транзакций в PHP с помощью сторонних API?

#php #api #transactions

#php #API #транзакции

Вопрос:

Скажем, например, я пытаюсь инициализировать календарь с повторяющимися событиями.

 try {
  $api->createCalendar()
  $api->createCalendarSettings()
  $api->createRecurringEvent()
} catch (Exception $exception) {

}
 

Я хочу, чтобы эти 3 вызова действовали как единое целое. Если какой-либо из них завершается с ошибкой, ранее успешные действия должны быть отменены. Есть ли разумный способ сделать это, кроме как вызывать обратное действие для каждого действия в блоке catch? Проблема с этим заключается в том, что я не знаю, какие действия уже завершились успешно, и обратные действия также могут привести к сбою.

Комментарии:

1. в PHP нет «транзакций». Это чисто концепция базы данных. если вы хотите выполнить «откат» в php, вам придется отменить каждый шаг самостоятельно. и учтите, что многие вещи НЕЛЬЗЯ отменить. например unlink('foo.txt') , их нельзя просто волшебным образом «отменить».