Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sposob na statyczne dane
Forum PHP.pl > Forum > PHP
DBR
mam nastepujacy problem i potrzebuje porady.

mam na swojej stronie jakies niezmienne dane, dajmy na to liste jezykow, liste panstw, ich kodow, nazw i idkow ktore wykorzytuje w wielu miejscach na stronie. np:
- user wybiera sobie w profilu selektem jakie zna jezyki lub z jakiego jest kraju
- jakies dane, dajmy na to artykuly tez korzystaja z tych jezykow i krajow, sa do nich przypiete i drukuje np nazwe jezyka w jakim jest ten artykul

jezyki, kraje i inne "statyczne" dane sa w bazie danych bo wiaze je z innym tablicami. sa one niezmienne, a jesli juz to zmieniaja sie raz na ruski rok. kilka pytan:

1. jak najlepiej korzystac z tych danych? trzymac w bazie i pobierac za kazdym razem czy moze lepiej pobrac raz i trzymac na stale w pliku php? czy moze bez znaczenia bo roznica w wydajnosci bedzie zadna?

2. jak juz mam te dane to w jakiej postaci je trzymac? zwykly global, a jak nie w globalnych bo sa zle i niedobre to do jakiegos rejestru, odrobine ladniejszego $GLOBALS albo singletona / instancji?
Krzysztofik
Ja bym to wrzucił do jakiegoś includowanego zawsze pliku php jako globalki.

Wygodne i uporządkowane, łatwo się zmienia i używa.
CuteOne
Ja bym to zostawił - różnicy nie odczujesz a tylko sobie problemów, możesz narobić. A jak już koniecznie chcesz to przenieść z bazy to poczytaj o memcache

i nie globaluj bo to nie zdrowe na żołądek wink.gif
tehaha
skoro mimo wszystko mogą się zmienić to lepiej w bazie, aczkolwiek najlepiej po pobraniu wrzucaj je do sesji tak, aby pobierać je tylko raz, a jeżeli już musisz w pliku to w postaci jednej wielowymiarowej tablicy, a nie armii zmiennych
DBR
dzieki za odpowiedz. trzy osoby, trzy porady ;] ktos jeszcze ma jakies propozycje? ;]

moga sie zmieniac ale tak sporadycznie rzadko ze ewentualne wygenerowanie nowych np plikow nie jest zadnym kosztem. czyli unzjamy ze sie nie zmieniaja.

ps: no tak, o sesjach zapomnialem, tam tez moge to trzymac... no tak, tablica wielowymiarowa w stylu:

  1. $languages = array(
  2. "1" => array("code" => "pl", name => "polski"),
  3. "2" => array("code" => "en", name => "angielski"),
  4. ...
  5. );
vvolv
To może ja coś dorzucę od siebie.
Proponuje stworzyć klasę, która w momencie inicjalizacji wczytuje sobie dane z bazy i je obrabia. Dodatkowo jakiś przyjazny interfejs.
+ Tylko jeden stworzony obiekt
+ Wczytujesz dane tylko raz na uruchomienie skryptu, później trzymasz w jakiejś zmiennej
+ Jak stworzysz dobry interfejs to da się z tego korzystać
+ Możliwość edycji z jakiegoś panelu admina

- musi zostać załadowane za każdym wczytaniem, zawsze to dodatkowe zapytanie
- trzeba to zaprogramować ; P
tehaha
dostałeś różne odpowiedzi, ponieważ nie sprecyzowałeś swojej sytuacji, a w praktyce używa się wszystkich tych sposobów:
- jak potrzebujesz wygodnej kontroli i masz sporo tych danych to faktycznie najlepiej napisać sobie klasę do tego;
- jeżeli to np. tylko plik językowy to wygodnie jest trzymać tablicę w pliku i go includować;
- a jak są to np. jakieś drobne indywidualne ustawienia użytkownika to możesz je po prostu pobrać i zapisać do sesji;

Wszystko zależy od konkretnego przypadku od tego jak dużo jest danych, jak często będą się zmieniać, z ilu poziomów autoryzacji jest dostęp , jak często będą pobierane itp.
DBR
dzieki wielkie za odpowiedzi, wyjasnily mi troche sytuacje :)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.