Autor wpisu: Michał Janicki, dodany: 30.05.2016 19:00, tagi: php
Zbliżamy się powoli do końca serii postów poświęconych bibliotece Ruckusing Migration.
W przedostatnim wpisie poruszę temat transakcji i logowania zdarzeń a także opiszę jak można zrzucić schemat bazy danych do pliku. Zachęcam także do przeczytania pierwszego, drugiego i trzeciego postu poświęconego Ruckusing Migration.
Transakcje
Transakcje w Ruckusing Migration obsługuje się bardzo prosto i wystarczy do tego znajomość trzech metod. Chodzi o start_transaction(), commit_transaction(), rollback_transaction(). Całość zobrazuje kod poniżej:
$adapter = $this->get_adapter(); try { $adapter->start_transaction(); $id = $this->query("INSERT INTO users VALUES(NULL, 'Jan', 'Kowalski')"); $this->query("UPDATE users SET first_name = 'Adam' WHERE id = " . $id); $adapter->commit_transaction(); } catch (Exception $e) { $adapter->rollback_transaction(); echo $e->getMessage() . „\n”; }
Kod jest raczej łatwy do zrozumienia, ale gwoli ścisłości wszystko wyjaśnię. W pierwszej kolejności należy pobrać adapter, ponieważ to z jego poziomu dostępne są metody służące do obsługi transakcji. W sekcji try rozpoczynamy transakcje metodą start_transaction() wykonujemy zapytania kod SQL i zatwierdzamy transakcję metodą commit_transaction(). Jeśli jednak coś pójdzie nie tak to w sekcji catch wycofujemy transakcję i wyświetlamy wiadomość z wyjątku. I tyle.
Logowanie zdarzeń do pliku
W zasadzie nie ma potrzeby wykonywać żadnych specjalnych działań aby logować zdarzenia do pliku. Ta opcja jest włączona domyślnie a my możemy ustalić w pliku konfiguracyjnym gdzie plik logu ma być przechowywany (chodzi o klucz log_dir na końcu pliku konfiguracyjnego). Nazwa pliku z logami odpowiada nazwie klucza w tablicy z danymi konfiguracyjnymi biblioteki.
A co jeśli będziemy chcieli dodać własne logi? W tym celu musimy użyć klasy Ruckusing_Util_Logger , jej instancję możemy pobrać za pomocą metody get_logger() dostępnej z poziomu adaptera. Istnieje także metoda set_logger() za pomocą, której można ustawić obiekt klasy, która ma posłużyć do logowania zdarzeń.
Gdy już mamy pobraną instancję loggera możemy użyć metody log i w jedynym parametrze jaki przyjmuje podać treść logu. Przykładowo dla poniższego kodu: