![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
PDO oferuje 3 możliwości wyświetlania błędów:
- tryb cichy - brak komunikatów - ostrzeżenia - Warning: - wyjątki - Exception: Która z nich jest najodpowiedniejsza do budowy aplikacji i wydajna? Aktualnie używam wyjątków. Przejdźmy do sytuacji, gdzie redaktor wysyła formularz z artykułem. Nie może go utracić w razie błędu! W przypadku WYJĄTKÓW: Kod try { ... return 1; } catch(PDOException $e) { /*odeślij formularz z powrotem*/ } Nie wystarczy zamknąć tylko PDO::commit() w instrukcji TRY, aby nie zatrzymywać wykonywania się skryptu, gdy wystąpi błąd. Dotyczy to nawet PDO::prepare - przynajmniej dla SQLite. W tym przypadku powodem mogą być pewnie literówki, nieznane funkcje, itd... Gdy w try{} zamkniemy tylko commit(); - prawdopodobieństwo utraty danych z formularza jest raczej małe. Mimo tego należy rozważyć: brak kompatybilności SQLite / MySQL między wersjami, inne konfiguracje, czy nawet błąd w skrypcie? Czy zastąpienie wyjątków wyjątków trybem cichym lub ostrzeżeniami (dla celów debuggingu) jest dobrym rozwiązaniem, czy jednak stanowi to potencjalną lukę w bezpieczeństwie? Nie chodzi tu o związki między zapytaniami (zapytanie X konieczne do wykonania zapytania Y), bo od tego są transakcje - mam rację? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Kod if( $db->commit() ) { ... return 1; } else { /* błąd - odeślij formularz użytkownikowi */ } PS. Jeśli wyjątki są lepsze dla baz danych, podajcie konkretne argumenty przemawiające za nimi. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ja nie uzywam wyjatkow. Nie lubie tego ustrojstwa i juz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
PDO mi generuje warningi i mi to wystarcza. Jesli mam zaleznosci miedzy kolejnymi zapytaniami to biore to w tranzkacje. Jak ktores sie sypnie to rollback i po sprawie. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ja nie uzywam wyjatkow. Nie lubie tego ustrojstwa i juz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) PDO mi generuje warningi i mi to wystarcza. Jesli mam zaleznosci miedzy kolejnymi zapytaniami to biore to w tranzkacje. Jak ktores sie sypnie to rollback i po sprawie. Tylko że czasem jak się sypnie na jednym to dzięki wyjątkowi możesz wyświetlić odpowiedni komunikat i coś z tym zrobić (np. wysłać sobie e-mail że się coś sypie), ale najważniejsze jest sterowaniem procesem wykonania, cały kod który ma się wykonać jest w jednym bloku try (pomijam transakcje, bo te to inny poziom obsługi przy błędach) i wykonanie odpowiedniej akcji na podstawie wyjątku. Tylko że wszystko jest ładne w teorii, a z tego co miałem styczność z PDO, SOAP itp. to zawsze wychodzi, że jest za mało typów wyjątków, nie da się dojść co się dzieje, a też się zdarza, że nie ma wyjątku tylko zamiast obiektu zwraca '-1'... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.10.2025 - 11:41 |