![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 5.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
nie wiem jak zrealizować, bardzo proszę o pomoc. Mam sobie tabelkę bazy danych: Foto_Katalogi ID|Name|Ile 1|Przyroda|10 2|Auta|30 3|Budynki|20 chcę żeby w menu mi się wyświetlała liczba zdjęć dla katalogu: Przyroda (10) Auta (30) Budynki (20) Tylko myk jest taki że tworzę sobie menu, jako html przy pomocy szablonów. I wtedy w tym pliku menu.html mam na sztywno wpisane ilości. w momencie jak dodaje nowy rekord np. dla katalogu Auta, chcę żeby w pliku menu.html poprawnie wczytać ilość. Nie chcę od nowa generować plik menu.html (fizycznie to nie ma sensu!). Jak to zrobić? Napisać menu.php i wtedy pobierać ilość rekordów dla każdego katalogu? Wtedy za każdym razem jak się wyświetla menu, skrypt musi się łączyć z bazą danych, odczytywać dane i je wyświetlać. Dla jakiej ilości użytkowników ma to sens i jak to można obejść? Dziękuję. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 29.05.2006 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jak to zrobić? Napisać menu.php i wtedy pobierać ilość rekordów dla każdego katalogu? Wtedy za każdym razem jak się wyświetla menu, skrypt musi się łączyć z bazą danych, odczytywać dane i je wyświetlać. Dla jakiej ilości użytkowników ma to sens i jak to można obejść? Wierz mi - nie będzie to absolutnie żadne zwolnienie skryptu (oczywiscie jakies bedzie - 0,001s?). Baza MySQL jest bardzo szybka. Nie masz się czym martwić i rób to na SQL
-------------------- [gg:8166107][jid:mmatheww@jabberpl.org][mail:mat.wojcik[at]gmail.com][www: http://mwojcik.pl]
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 49 Pomógł: 5 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Najlepsze w tym wypadku bedzie zcacheowanie wynikow badz do pliku zewnetrzenego - badz do sesji uzytkownika - wowczas menu za kazdym razem generowane bedzie bez dostepu do mysqla
Cytat Wierz mi - nie będzie to absolutnie żadne zwolnienie skryptu (oczywiscie jakies bedzie - 0,001s?). Baza MySQL jest bardzo szybka. Nie masz się czym martwić i rób to na SQL Wszystko zalezy od wielkosci serwisu - przy malej stronie z jednym userem online takie wybieranie menu kazdorazowo nie powinno zbytnio przeciezyc bazy - jednak serwisy z 30-40 userami online - wyswietlajace nie tylko "menu" ale takze ostatnie newsy, ostatnie komentarze itd - potrafia mocno docisnac baze danych. Sam gdzies 2 lata temu mialem taki problem - strona dzialala bez zarzutow dopoki nie zaczelo wchodzic coraz wiecej osob - pozniej ilosc osob online wzrosla i hoster zagrozil ze nas odlaczy jesli nie zoptymalizujemy skryptow php ;]. Nagle z 20 zapytan do generacji podstrony zrobily sie 2 ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 5.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
OK.
Ale co jeśli się scheszuje menu do zmiennych sesyjnych dla użytkownika, a w tym czasie dochodzi co najmniej ponad 20 nowych rekordów? Sceshowane dane nie będą wtedy aktualne ... Rozumiem że nie ma żadnego innego rozwiązania ... alo to jak w takim razie radzi sobie np. http://allegro.pl/20585_filmy.html mają katalogi a w nawiasie ilość dostępnych rekordów. U nich jest to plik HTML. Na pewno się szybciej wykonuje niż co chwila skrypt w php. Jak oni to robią ? Dziękuję za odpowiedź. |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
alo to jak w takim razie radzi sobie np. http://allegro.pl/20585_filmy.html mają katalogi a w nawiasie ilość dostępnych rekordów. U nich jest to plik HTML. Na pewno się szybciej wykonuje niż co chwila skrypt w php. To normalny skrypt php a to że rozszerzenie ma takie to nic nie oznacza. Równie dobrze może byc rozszerzenie .jpg ![]() Poczytaj o mod_rewrite |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 49 Pomógł: 5 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
OK. Ale co jeśli się scheszuje menu do zmiennych sesyjnych dla użytkownika, a w tym czasie dochodzi co najmniej ponad 20 nowych rekordów? Sceshowane dane nie będą wtedy aktualne ... Rozumiem że nie ma żadnego innego rozwiązania ... Ustawiasz lifetime dla cache na niski - wowczas uzytkownik bedzie aktualizowal wyniki raz na minute. Poza tym najlepsze imo jest polaczenie sesji i plikow - w plikach cacheujasz cale wytworzone przez jedego uzytkownika menu - nastepny uzytkownik sprawdza tylko czy scacheowany plik nie jest za stary - porownujac np daty modyfikacji z plikiem menu_changed (aktualizowanym dla kazdej zmiany w menu) - jesli jest starszy - ponownie pobiera menu zapisuje do pliku i sobie do sesji - jesli nie jest - pobiera tylko dane pliku. Zapytanie do pliku odbywa sie wg lifetime danego cache |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.07.2025 - 18:01 |