![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam, ostatnio postanowilem sie zajac cachowaniem zapytan z bd. I tak pomalutku stworzylem swoja klase do cachowania/odczytywania zapytan z PostgreSQL. Klasa po malych przerobkach bedzie dzialac rowniez z MySQL.
Na poczatek, co by nie byc posadzony o plagiat (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) od razu przyznam sie ze korzystalem z rozwiazania mike_mecha (http://php.nq.pl/index.php?showtopic=22487&hl=cache) - ale oczywiscie tyko pogladowo (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Na poczatek moze diagram mojego rozwiazania Diagram klas (uml znam slabo wiec pewnie sa bledy w diagramie jesli chodzi o oznaczenie relacji) Co do kodu to znajduje sie on tutaj: (podaje linki bo kodu jest za duzo na wklejanie) Klasa DB -glowna klasa bazy danych Db_result - abstrakcyjna klasa wyniku zapytania Db_Result_orig - wynik zapytania wykonanego z bazy Db_result_cache - wynik zapytania wykonanego z cachu (lub z bazy z pozniejszym cachowaniem) GenericException - Rozszerzenie klasy Exception o zapis wyjatkow do loga PGException - klasa wyjatku bazy danych Klasy dodatkowo korzystaja z kilku stalych (np. connection string, sciezka do katalogu z cachem itp), ktore trzymam w osobnym pliku -> gdyby ktos chcial przetestowac na zywo dzialanie klasy to trzeba odpowiednie pliki wygenerowac wraz ze stalymi. Najwazniejsze cechy moich klas to: - cachowanie zapytan do pliku tekstowego / odczytywanie zapytan z takiego cachu - system obslugi wyjatkow z zapisem bledow do logow - mozliwosc iterowania wyniku - zastsowany interfejs iteratora Jako ze jestem poczatkujacy prosze o ocene kazdego aspektu, ktory przyjdzie wam do glowy - poczynajac od kodu a na organizacji projektu konczac - kazda rada / wytkniecie bledu mile widziane. Przykladowe zastosowanie
Ten post edytował athabus 15.06.2006, 19:28:22 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat Dodałem die() w razie bledu polaczenia Tez zle, to user biblioteki ma decydowac czy w przypadku bledu polaczeniazakonczyc skrypt. Cytat Wolal bym unikac ogromnych blokow try...catch - podobno nie sa one optymalne jesli chodzi o czas wykonania skryptu Jaki ogromny -- 20 linii w bloku to malo, poza tym miales blednie zrobione te bloki (pisalem o tym w poprzednim poscie)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Tez zle, to user biblioteki ma decydowac czy w przypadku bledu polaczeniazakonczyc skrypt. Jaki ogromny -- 20 linii w bloku to malo, Die() dodale w przykladzie po wylapaniu wyjatku polaczenia nie w klasie... nieprecyzyjnie sie wyrazilem (zmiana jest naniesiona w przykladzie uzycia). Cytat poza tym miales blednie zrobione te bloki (pisalem o tym w poprzednim poscie)
Tu sie gdzies zgubilem - o jakich blokach mowisz? W ktorym miejscu mam cos takiego? Znalazlem tylko jeden taki przyklad jak podawales w pierwszym poscie w moim kodzie (w klasei Db_result_orig), ale tam wszystko dzialala tak jak powinno. Chodzilo o to, ze wartosc domyslna dla result byla null - co oznaczalo ze nie podano parametru. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 17:36 |