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
27.08.2011, 10:45:07
Ja bym to wrzucił do jakiegoś includowanego zawsze pliku php jako globalki.
Wygodne i uporządkowane, łatwo się zmienia i używa.
CuteOne
27.08.2011, 11:03:32
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
tehaha
27.08.2011, 13:06:08
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
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" => array("code" => "pl", name
=> "polski"), "2" => array("code" => "en", name
=> "angielski"), ...
);
vvolv
27.08.2011, 15:47:00
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
27.08.2011, 18:18:54
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.
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.