Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework] zagnieżdżone transakcje
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Hejka,
załóżmy że mamy rozpoczętą transakcję. Coś tam robimy i w tym coś tam wykonujemy jakąś inną funkcję. Funkcja ta niezależnie od kodu, w którym została wykonana, również rozpoczyna własną transakcję. Oczywiście dla mysql wywali to błąd.
Jak to rozwiązujecie w ZF? Są jakieś mechanizmy na to?

Ja do tej pory we własnym frameworku robiłem to tak, ze metoda beginTransaction incrementowała licznik rozpoczeć. Gdy licznik byl wiekszy od 1 to nie rozpoczynała fizycznie transakcji w bazie i był spokoj. Oczywiscie metody rollback i commit zmniejszały licznik i gdy dochodzil do zera to wykonywały fizycznie na bazie rollbacl lub commit.

Czytając rozne źródła o ZF tam nie ma czegoś takiego. Niektórzy proponowali sprawdzac czy jest rozpoczęta transakcja czy nie i w zależności od tego samemu rozpocząć lub nie. Daje to dodatkowy narzut kodu i wcale nie jest takie idealne.
Innym rozwiązaniem byłoby stworzenie klasy pomocniczej, która dziedziczy po DB i tam nadpisac metody begin, commit, rollback i dodać wspomnianie wyżej liczniki. Musiałbym jednak pisać taką klasę dla kazdego wykorzystywanego sterownika.

Czy radzice sobie jakoś inaczej w tej kwestii?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Master Pain
post
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


A może dodanie parametru do funkcji, w której jest/ma być transakcja, np.:

  1. function jakasFunkcja($parametr1, $parametr2, $useTransaction = true) {
  2. if(true === $useTransaction) {
  3. //rozpoczęcie transakcji
  4. }
  5.  
  6. //I tak samo dla roll'a i commit
  7. }
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 02:40