![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 288 Pomógł: 12 Dołączył: 2.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam 2 pytania:
1) Co daje unset. Wiem, że dzięki temu zwalnia się pamięć, ale np. czy coś mi to da, jeżeli pod koniec wykonywania skryptu dołącze coś takiego:
I czy pozostawione zmienne, np. $db_password można jakoś odczytać, itd. z pliku .php, czy nie muszę się martwić o wyjście zmiennych. 2) Hmm, ilość zapytań do bazy danych. Istnieje coś takiego na forach np. phpbb, ze wyswietla ilosc zapytan do bazy danych. No ok, ale jak to jest liczone? bo jak jest np. 30 zapytan gora na takim forum, to nie wiem ile jest np. w moim cms-ie. (IMG:http://forum.php.pl/style_emoticons/default/ohmy.gif) Hmm, dajmy na to, ze jest taki skrypt:
No wiec odnosnie tego mam takie jedno big pytanie. Skoro dla kazdego newsa wykonuje zapytanie o autora, tzn. ze jezeli mam 100 newsów to wykonuję dodatkowych 100 zapytan? Czyli powinienem miec wyswietlone 1xx zapytan do sql? A moze mozna jakos inaczej rozwiazac pobieranie autora przez jakies zaawansowane zapytanie do sql? Kod pisany od reki, ale mam nadzieje, ze rozumiecie o co chodzi;d Dziękuję z góry za odpowiedzi:) Ten post edytował tommy4 10.07.2006, 07:44:03 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Oczywiście, że nie robisz stu zapytań, tylko jedno. Za jednym zamachem wybierasz np. 100 rekordów i potem jes sobie wyświetlasz. Trzeba umiejętnie skonstruowac zapytanie do DB i zrobić je wtedy, gdy masz maksymalnie dużo informacji o tym, co powinieneś ująć w takim zapytaniu. Wszystko to oczywiście można zrobić tak jak mówisz - czyli przez 100 zapytań, ale wydaje mi się to raczej błędem przedszkolnym.
Zmienna jak usuniesz, to po prostu aktualnie wykonywany proces jej nie ma i tyle. Zawsze ktoś może sobie w ramach "testowania serwera na błędy" obejrzeć twoje pliki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Co do unset:
teraz we wszystkich nowoczesnych jezykach progrogramowania wysokiego stopnia, jest takie cos jak "Garbage Collector", jet to odpowirdzialne za zwalnianie pamieci w miare mozliwosci, nie bede sie rozpisywal za bardzo ale streszcze ci co sie dzieje w php: W php kazda zmienna,obiekt ma tykie cos jak ilosc powiazan (reference count), co znaczy "ile zeczy jest zalezne od tej zmiennej/objektu", jak ten refference count staje sie rowny = 0 to zmienna / object jest automatycznie zwalnianie z pamieci, i niema podszeby robienia unset, bo wychodzi na jedno. Ale tylko jak masz na mysli zwolnic pamiec. Ten post edytował nasty_psycho 10.07.2006, 10:17:32 |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
W php kazda zmienny,obiekt ma tykie cos jak ilosc powiazan (reference count), co znaczy "ile zeczy jest zalezne od tej zmiennej/objektu", jak ten refference count staje sie rowny = 0 to zmienna / object jest automatycznie zwalnianie z pamieci, (...) Nie prawda.Tak jest w Javie, ale nie w php. W php jak ilośc powiązań jest równ zero to zmienna może być usunięta ale kiedy to nastapi to zależy od "widzimisie" Garbage Collectora. (...) i niema podszeby robienia unset, bo wychodzi na jedno. unset() jest często opowiedzią w sytuacji kiedy chcesz mieć kontrolę nad tym kiedy zaminna m być usunięta. sam o tym decydujesz, więc na pewno nie wychodz na jedno.Na przykład: Jak masz jakieś operacje w destruktorze klasy to za cholerę nie przewidzisz kiedy to się wykona. No chyba że użyjesz unset() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
1)
Cytat unset() jest często opowiedzią w sytuacji kiedy chcesz mieć kontrolę nad tym kiedy zaminna m być usunięta. sam o tym decydujesz, więc na pewno nie wychodz na jedno. Cytat Ale tylko jak masz na mysli zwolnic pamiec. 2) Cytat Nie prawda. Tak jest w Javie, ale nie w php. -- Edit : (Ten artykul jest o php4) http://www.zend.com/zend/art/ref-count.php Ten post edytował nasty_psycho 10.07.2006, 10:30:02 |
|
|
![]()
Post
#6
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
Ad. 2 w phpBB i innych forach po prostu w celu wykonania zapytania jest odpalana specjalna klasa która po wykonaniu zapytania zwieksza liczik wykonanych zapytan o 1 i potem na koniec skryptu ten licznik wyswietla...
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 288 Pomógł: 12 Dołączył: 2.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
nom spoko, dzięki wszystkim, dzisiaj sobie poczytałem o zaawansowanych zapytaniach do sql, aliasy itd. to juz teraz elo pojdzie:) i - 100 zapytan na 100 newsow, mniejsze obciazenie bazy danych:O uff, ale mam roboty, ide robic, a nie sie obijac:D dzięki all
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 18:31 |