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:
<?php function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) { switch ($errno) case E_WARNING: break; } } ?>
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:
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:
<?php function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) { switch ($errno) { case E_WARNING: //przypadek gdy nie mozna nawiazac polaczenia z hostem if ($errstr='pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: could not connect to server: Connection timed out Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?') { } //przypadek gdy uzytkownik nie wpisze pytania lub wpisane pytanie jest niepoprawne elseif($errstr='pg_query() [function.pg-query]: Query failed: error!') { } break; } } ?>
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:
<?php if($errstr=='pg_query() [function.pg-query]: Query failed: error!') ?>
i wsjo..

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!