Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]obsluga bledow
misty
post
Post #1





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


hej!
poczytalam troche o obsludze bledow, widze ze mozliwe jest przechwycenie bledu/wyjatku etc. ale czy ktos z Was orientuje sie moze czy mozna zrobic tak by przechwycic konkretny blad/ostrzezenie?
tzn.
chcialabym kazdy (tzn nie kazdy mozliwy, ale iles tam) blad/ostrzezenie moc przechwycic, ale nie na zasadzie takiej, np:
  1. <?php
  2. function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
  3. {
  4. switch ($errno)
  5. case E_WARNING:
  6. echo "ostrzezenie";
  7. break;
  8. }
  9. }
  10. set_error_handler("errorHandler");
  11. ?>

poniewaz to zwroci mi dla kazdego warningu "ostrzezenie"; a powiedzmy (przykladowo) ze w mojej aplikacji moga pojawic sie 4 rozne warningi i ja bym kazdy z nich chciala z osobna obsluzyc i dla kazdego inny komunikat wyslac. np.
powiedzmy ze na stronie pojawi mi sie komunikat:
  1. Warning: pg_query() [function.pg-query]: Query failed: in /var/www/htdocs/test.php on line 19


i teraz ja chce przechwycic ten konkretny warning i wyswietlic cos dla niego.
jak sie pojawi inny warning to co innego.. czyli jak konkretne tresci bledow przechwycic by je z osobna moc obsluzyc?
mam nadz ze napisalam w miare zrozumiale o co mi chodzi..

pzdr!


zaczelam cos sama kombinowac i wyszlo mi cos, ale nie do konca dziala jak nalezy. ale po kolei..
kawalek mojego kodu:
  1. <?php
  2. function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
  3. {
  4. switch ($errno)
  5. {
  6. case E_WARNING:
  7. //przypadek gdy nie mozna nawiazac polaczenia z hostem
  8. if ($errstr='pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: could not connect to
  9. server: Connection timed out Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?')
  10. {
  11. echo "brak polaczenie z hostem<br>";
  12. }
  13.  
  14. //przypadek gdy uzytkownik nie wpisze pytania lub wpisane pytanie jest niepoprawne
  15. elseif($errstr='pg_query() [function.pg-query]: Query failed: error!')
  16. {
  17. echo "niepoprawne zapytanie<br>";
  18. }
  19. break;
  20. }
  21. }
  22. set_error_handler("errorHandler");
  23. ?>


zrobilam specjalnie 2 przykladowe (brak polaczenia i niepoprawne zapytanie) bledy, za pomoca zmiennej $errstr wyciagnelam tresc tych warningow i teraz chce je z osobna obsluzyc.
problem jest taki, ze obslugiwany jest tylko pierwszy if.. czyli jak wylacze postgresa, to faktycznie na stronie ladnie mi sie pokaze 'brak polaczenia z hostem'. jednak gdy wlacze serwer i wpisze na stronie niepoprawne zapytanie, to nadal pojawi sie 'brak polaczenia z hostem'. sytuacja wyglada tak samo jak zamienie kolejnosc obslugi tych warningow.. tzn. jesli w pierwszym if bedzie obsluga niepoprawnego zapytania to bedzie mi sie pojawiac caly czas (tzn i przy wylaczonym serwerze i niepoprawnym zapytaniu) 'niepoprawne zapytanie'.
podejrzewam ze blad jest moze w mojej konstrukcji if-elseif..
ma ktos moze pomysl?
pzdr!

jakby ktos kiedys mial podobny problem i chcial skorzystac z tego skryptu to dodam ze w if-ach przy $errstr trzeba dac operator porownania, nie przypisania.. czyli:
  1. <?php
  2. if($errstr=='pg_query() [function.pg-query]: Query failed: error!')
  3. ?>

i wsjo.. winksmiley.jpg
ale dziala to przy komunikatach nie zawierajacych tych glupich lacznikow typu: [function.pg-cos]..
wlasnie, moze ktos wie jak wylaczyc pokazywanie sie tych lacznikow w warningach?
bo ten przykladowy warning wyglada w rzeczywistosci:
pg_query() [<a href='function.pg-query'>function.pg-query</a>]: Query failed: error! " title="Zobacz w manualu PHP" target="_manual
da sie w jakims php.ini czy gdzies ustawic by nie bylo tej czesci : [<a href='function.pg-query'>function.pg-query</a>] ?
pzdr!
Go to the top of the page
+Quote Post

Posty w temacie
- misty   [php]obsluga bledow   18.03.2007, 19:01:20
- - Kicok   O wiele łatwiej ci będzie napisać prostą klasę do ...   18.03.2007, 21:19:13


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

 



RSS Aktualny czas: 19.08.2025 - 05:46