Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Эмуляция транзакций в php-коде?

Сообщения:  [1-2] 

 
 автор: Trianon   (10.04.2006 в 21:42)   письмо автору
 
   для: nikk   (10.04.2006 в 21:23)
 

Такого рода встроенных средств, насколько мне известно , нет. Если не считать механизм exceptions. Но, во-первых, он появился только в 5 версии PHP, а во-вторых, и с его использованием все равно придется реализовывать каждый шаг. Это менее страшно, но все равно не коротко. :)

   
 
 автор: nikk   (10.04.2006 в 21:23)   письмо автору
 
 

Эмуляция транзакций в php-коде?

Задача:
Есть такой скрипт, который загружает картинку.
Скрипт выполняет следующие действия:
1 Читает и проверяет POST-данные из формы
2 загружает картинку в спец временную папку,
3 ужамает ее,
4 создает превьюшку,
5 лезет в базу, пишет в базу данные из формы,
6-7 переименовывает обе картинки и перекладывает в «боевую» папку,
8 пишет в базу, что картинку можно использовать.

Проблема:
При сбое на любой операции должен производится откат в начальное положение: удаление записанной информации из базы, стирание картинок из временных и /или боевых папок и т.д.
Т.е. хочется создать некую транзакцию из нескольких операций, включающих: загрузку и работу с файлами, записи в базу.

Писать после каждой операции специальный откат, учитывающий предыдущие действия – долго и страшно :) причем никто не гарантирует от сбоя в самих шагах по откату.

Существует ли какое нибуть стандартное решение, реализующее что-то в роде :

// После N-го шага включаю проверку:

if (!(прошел N-й шаг))
{
Отмени все то, что наделал весь текущий скрипт и забудь как страшный сон;
}

   

Сообщения:  [1-2] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования