![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 294 Pomógł: 4 Dołączył: 19.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Dosyć niedawno zacząłem odkrywać programowanie obiektowe, więc mam pytanie. Stworzyłem skrypt, który wyciąga z bazy danych jednym zapytaniem dzisiaj, wczoraj zalogowanych userów, oraz dzisiaj i wczoraj zarejestrowanych. Wszystko ładnie działa, jednak gdybym tworzył strukturalnie, wydaje mi się było by mniej kodu - tyle, że więcej zapytań do bazy danych - a chciałbym wszystko zminimalizować
![]() Napisałem tak ( pewnie chaotycznie ![]()
Tyle w tym dobrego, że całą klasę mam w innym pliku i go includuje, a w dowolnym miejscu wpisuję tylko dwa wyrazy : $obiekt->zalezy_co_chce_otrzymac . Natomiast strukturalnie napisałbym cztery proste funkcje, które wyciągają odpowiednio z bazy danych odpowiednie wartości, albo jedną, w której wpisuję warunek... Jakie inne zastosowania mógłbym użyć, by to "programowanie obiektowe" w tym przypadku co podałem, było czytelniejsze, o znacząco mniej objętości ? W tym przypadku obciążam bardziej tylko serwer, a w przypadku wielu zapytań obciążył bym bardzo znowu bazę danych... ? Nie chodzi mi tutaj o gotowe rozwiązanie, tylko o wskazówki, czego jeszcze nie zastosowałem, co ułatwiło by pracę na takich właśnie skryptach o oparciu o obiektowość? Pozdrawiam! Ten post edytował bialko0019 13.11.2010, 12:10:14 -------------------- ---
"kto pyta ten nie błądzi"... |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
1) WHERE login NOT LIKE''
Co to ma byc? 2) Pobierasz wszystkich userów tylko po to by wyliczyc ilu ich jest? Tylko po to by wyliczyc ilu zarejestrowalo sie dzisiaj? Przecież ty baze i skrypt zarżniesz czyms takim przy większej liczbie userów. 3) Każdą z rzeczy co chcesz zrobic zrób najpierw jako oddzielne zapytanie. ALe tak, by to zrobic w zapytaniu a nie w php. DO liczby uzywa sie COUNT a nie w php sie zlicza wszystkie rekordy. Gdy już będziesz miał te wszystkie zapytania to połącz je przez zwykle UNION. Bedzie to o niebo optymalniejsze od tego co masz teraz. 4) Mozna to oczywiscie zrobic nawet bez union, w jendym zapytaniu, ale juz nie będę ci glowy zawracal bo jest to ciut bardziej skomplikowane edit:
A to niby po co? Usłuszałeś pojęcie OBIEKT i walisz tym wszędzie gdzie popadnie bez opamiętania - no nie na tym to polega ![]() I jeszcze na dodatek tworzysz obiekt STATYSTYKI dla każdego usera już w obiekcie STATYSTYKI :/ -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 294 Pomógł: 4 Dołączył: 19.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
1) No tak, bo mam trochę w bazie rekordów, które mają puste kolumny `login` i inne, ale ich potrzebuję w innym celu niż statystyki dlatego ich w taki sposób wykluczam teraz.
Czyli w przypadku takiego skryptu założeniem najodpowiedniejszym założeniem by było: 1. Policzenie wszystkich użytkowników, zapytaniem:
2. Znalezienie, ile jest użytkowników z dzisiejszym logowaniem:
3. Analogicznie z ostatnim logowaniem.. Rzeczywiście, chcę zobaczyć ile takich rekordów jest, a nie potrzebne są mi dane kto co i jak i kiedy, gdy wywołałem zapytaniem SELECT * FROM uzytkownicy... Teraz praktycznie: Tworzę klasę. Piszę funkcje, które zwracają odpowiednie liczby - zależy co chcę uzyskać. Uzyskaną liczbę przypisuję do obiektu, np. : $this=dzisiaj_zalogowani=$dzisiejszy zalogowani . Zamykam klasę. Teraz w miejscu, gdy chcę wyświetlić te dane statystyczne, po prostu piszę:
O to Ci chodziło mniej więcej ? o coś takiego:
i ten poprzedni wykonuje się średnio 0.5s, a ten powyżej średnio 0.05, może dłużej - czyli ok 10 razy szybciej. Ale mniej więcej, to jest dobrze napisany skrypt z klasą? Ten post edytował bialko0019 14.11.2010, 11:14:52 -------------------- ---
"kto pyta ten nie błądzi"... |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Można wiedzieć po co masz w bazie puste loginy? Pokaż tabelę, bo mam przeczucie, że jest przekombinowana.
Ten post edytował Mephistofeles 14.11.2010, 12:40:56 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 294 Pomógł: 4 Dołączył: 19.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mephistofeles, pytałem w temacie o klasę, a nic nie wspominałem o bazie danych, a dokładniej tabelę
![]() ![]() ![]() ![]() -------------------- ---
"kto pyta ten nie błądzi"... |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Chodziło mi o to, ze do sprawdzania czy cos jest puste czy nie, nie uzywa się LIKE..... przecież to jest cholernie nie optymalne
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 13:51 |