Obsługa błędów |
Obsługa błędów |
23.02.2011, 13:54:20
Post
#1
|
|
Grupa: Zarejestrowani Postów: 542 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
Witam,
mam taką funkcje do obsługi błędów. Chciałbym ją usprawnić, poprawić błędy jeśli są, dodać obsługe błędów zapytań, obsługe tych będów o których nie wiem.
Pytania: - Dlaczego na localhost muszę dodać funkcje date_default_timezone_set(), aby ErrorHandler() działał bez błędów, a na serwerze ta funkcja nie działa, ale całość działa dobrze bez tej funkcji? - Jak dodać obsługę błędów zapytań? Czy trzeba tutaj, przy każdym zapytanie dodać np. trigger_error(mysql_error()); , czy można prościej w inny sposób. - Czy o czymś nie wiem i nie uwzględniłem w obsłudze błędów i zapisaniu logów błędu w pliku. Chciałbym prosić o więcej informacji na ten temat. -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
23.02.2011, 13:58:25
Post
#2
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 31 Dołączył: 23.02.2009 Skąd: Sanok Ostrzeżenie: (0%) |
Cytat - Jak dodać obsługę błędów zapytań? Czy trzeba tutaj, przy każdym zapytanie dodać np. trigger_error(mysql_error()); , czy można prościej w inny sposób. Najprościej skorzystać z PDO i rzucać wyjątkami |
|
|
23.02.2011, 14:10:16
Post
#3
|
|
Grupa: Zarejestrowani Postów: 542 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
Bez PDO, z samych połączeniem z bazą nie byłoby problemu,
zmiana w jednym pliku i gotowe, ale zapewne musiałbym przerobić zapytania itp. itd., nie nie, to nie jest najlepszy pomysł. -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
23.02.2011, 18:46:11
Post
#4
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) |
O Jezu, przecież to jest temat rzeka, możesz sobie zrobić fabrykę do sql'a i ładnie ją dekoratorem upięknić, później błędy możesz albo wyjątkami rzucać albo trigger_error(). Możesz też zrobić odwróconego obserwatora, w tym że będzie wiele obserwujących a tylko jeden obserwowany, no róbta co chceta. Jak masz php 5.3 to dodaj sobie : "E_ALL | E_STRICT", poza tym brakuje Ci obsługi fatal errorów. Używanie globali w takim miejscu to chyba najgłupszy pomysł. Jak się coś psuje to musi mieć to osobny interfejs, który z założenia nie może się zepsuć.
* Dlaczego na localhost muszę dodać funkcje date_default_timezone_set(), aby ErrorHandler() działał bez błędów, a na serwerze ta funkcja nie działa, ale całość działa dobrze bez tej funkcji? Hmmmm dziwna sprawa, może sprawdź sobie pierw: date_default_timezone_get, ale pierwszy raz się spotykam z takim błędem. Bo błąd nie opisany i napisany tylko że jest błędem, nie jest błędem. -------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
24.02.2011, 15:45:12
Post
#5
|
|
Grupa: Zarejestrowani Postów: 542 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
Funkcja date_default_timezone_set() prawdopodobnie na serwerze było PHP4 i pewnie stąd problem.
Cytat Używanie globali w takim miejscu to chyba najgłupszy pomysł. Chcę bez global $path; ale muszę mieć adres ścieżki w funkcji, który jest zmienny. Plik z funkcją jest includowany i może być załadowany w każdym pliku.php i różnym katalogu: / - katalog główny /katalog/ /katalog/katalog/ itd. Jak mogę inaczej podać zmienną scieżkę to pliku w tym przypadu jeśli pliki z logami znajdują się w katalogu: /logs/ Wcześniej miałem tak, bez głupstw typu global $path; : $file_path = dirname($_SERVER['SCRIPT_FILENAME']).'/logs/'.$file; ale działało dobrze tylko dla katalogu głównego. -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
24.02.2011, 16:51:54
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 1 Dołączył: 11.02.2011 Ostrzeżenie: (0%) |
- Dlaczego na localhost muszę dodać funkcje date_default_timezone_set(), aby ErrorHandler() działał bez błędów, a na serwerze ta funkcja nie działa, ale całość działa dobrze bez tej funkcji? To kwestia działania funkcji date(). Poczytaj jej opis w manualu, a zobaczysz, że w jednym miejscu może ona działać bez date_default_timezone_set(), a w innym nie. PS. pojęcia localhost, "u mnie" i "na serwerze" są zupełnie nieścisłe. Podawaj raczej konfiguracje środowisk. |
|
|
28.02.2011, 09:32:28
Post
#7
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) |
@Malina:
jeżeli wiesz że ten skrypt jest w katalogu: /var/www/TwojaStrona/publich_html/jakis_katalog/obsluga_bledow.php a bledy zapisujesz w: /var/www/TwojaStrona/publich_html/bledy/errors.txt to przeciez możesz zrobić tak: i też Ci będzie działać Ten post edytował cojack 28.02.2011, 09:33:01 -------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
28.02.2011, 10:47:54
Post
#8
|
|
Grupa: Zarejestrowani Postów: 542 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
No tak,
ale skąd mogłem to wiedzieć Używałem kiedyś tego typu ściezki, tzn. $path = dirname(__FILE__).'/'; ale wciąż nurtowała mnie taka nie spójność zależnie od serwera (systemu) ścieżka miała postać - /home/serwer/public_html/pliki/errors.log // OK ale np. na localhost - C:\Program Files\serwer\html/pliki/errors.log // znak slasha i backslesha w ścieżce Napisałem więc funkcje która rozpoznaje ścieżkę względną ($path = './','../','../../' itd.) zamiast jak wyżej bezwzględnej $path = dirname(__FILE__).'/'; i problem rozwiązany, ale w tym przypadku globals $path nie jest najlepszym rozwiązaniem może więc skorzystam z Twojego, ponieważ działa bez problemu tylko ta nie spójność slash i backslesh w jednej ścieżce? -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
28.02.2011, 10:57:54
Post
#9
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) |
So you can use the const DIRECTORY_SEPARATOR if you have diferents os on direct server and localhost to work it properly.
-------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
22.03.2011, 13:14:32
Post
#10
|
|
Grupa: Zarejestrowani Postów: 542 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
jeżeli dobrze rozumię
wystarczy zrobić tak: $fpath = dirname(__FILE__).DIRECTORY_SEPARATOR; // zaleznie od systemu moze byc slash lub backslesh i ten problem też będzie rozwiązany. Cytat poza tym brakuje Ci obsługi fatal errorów Można wiedzieć coś więcej jak taką obsługę fatal errorów dobrze zrobić. Czy są gdzieś dostępne przykłady? -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
Wersja Lo-Fi | Aktualny czas: 4.06.2024 - 13:35 |