![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
ostatnio zainteresowała mnie teoria działania systemów typu CMS jak fora dyskusyjne, czy aplikacje ułatwiające tworzenie stron poprzez wpisywanie treści w wygodnych dla użytkownika interfejsach. CMSy mają mnogość konfigurowania, dzięki temu są tak wygodne i można je łatwo dostosować do swoich potrzeb. Jeżeli cała konfiguracja opiera się na jednym pliku, to jak taki plik przygotować? Interesuje mnie możliwość sprawnego odczytu, jak i zapisu przez aplikację, a nie developera/użytkownika. Który format pliku byłby najlepszy i jakich funkcji użyć? Nabieram wprawy w PHP, jeżeli będzie konieczność napisania klasy zajmującej się takim plikiem, nie będę miał z tym problemów. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Moim zdaniem to w plikach konfiguracyjnych trzymasz dane, które pozwolą nawiązać połączenie z bazą danych a reszta w bazie. (łatwa edycja)
|
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat CMSy mają mnogość konfigurowania, dzięki temu są tak wygodne i można je łatwo dostosować do swoich potrzeb. Jeżeli cała konfiguracja opiera się na jednym pliku, to jak taki plik przygotować? Trzymać konfigurację w SQLite? [; |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 3 Dołączył: 12.04.2007 Skąd: Wągrowiec Ostrzeżenie: (0%) ![]() ![]() |
Tak jak mój poprzednik - potwierdzam SQLite, ale możesz również rozważyć pliki XML.
Opcja z trzymaniem danych do bazy w pliku .php a resztę konfiguracji w bazie, to też dobra rzecz. |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Zależy od aplikacji. Czasami wystarczy zwykły .ini lub .csv Jednak nie jest to w ogóle skalowalne i chyba lepiej korzystać od razu z xml'a. Jednak jak masz jakiś wrapper to w sumie bez różnicy w czym trzymasz. Jak komu wygodnie i wg potrzeb... Niektórzy definiują tablicę w includowanym pliku po prostu.
Pozdrawiam! |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej by było gdyby konfiguracja nie była zależna od jakiegoś konkretnego formatu. Możesz stworzyć sobie n klas implementujących taki sam interface, a operujących na innych formatach danych, np.:
Koniec końców i tak najlepiej, jakby konfiguracja była cacheowana do pliku, gdzie dane byłby w postaci zserializowanej tablicy czy obiektu - bo to jest odczytywane najszybciej. Ten post edytował Crozin 24.07.2009, 11:59:49 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 24.07.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
Dobrą alternatywą dla XMLa jest JSON
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Hm... na JavaScriptcie za bardzo się nie znam... tyle tylko co podstawy. W końcu będzie się trzeba nauczyć, ale na razie...
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Cytat Zastanawiam się nad MySQL albo XML, chociaż nie wiem jak by można edytować taki plik. Jesli chodzi o XMl to masz chyba simpleXML do parsowania danych w plikach xml jesli dobrze pamietam. Jak nie to mozesz napisac prosta klase specjalnie dla twoich plikow konfiguracyjnych. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 7 Dołączył: 29.04.2009 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie wiem tylko, czy jest jakaś funkcja zamieniająca taki plik na drzewiastą tablicę, SimpleXml Ci to bardzo ładnie załatwi, a dokładniej rzecz biorąc funkcja simplexml_load_file jeśli odpowiednio dobrze przemyślisz konfigurację, to w takim wypadku pobranie całej zamyka się w użyciu wyżej wymienionej funkcji. Klasa pozwala też na edycję konfiguracji np z poziomu panelu Administratora. (jeśli dobrze pamiętam to wystarczy zmienić wartość w naszej array i plik zapisać funkcją SimpleXMLElement::asXML) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ja tam wolę .ini - nie trzeba zaprzęgać całego parsera DOM jak w przypadku xml. A co do odczytu/zapisu? Zend_Config przykładowo.
Cytat SQLite podoba mi się, ale jak czytałem ma wiele wad, a poza tym mało darmowych serwisów hostingowych obsługuje to rozszerzenie. Raczej większość obsługuje. Nawet czasami zdarzają się hostingi gdzie to jedyne rozszerzenie dla PDO. Jest kilka razy szybszy niż typowy system bazodanowy. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 3 Dołączył: 12.04.2007 Skąd: Wągrowiec Ostrzeżenie: (0%) ![]() ![]() |
odnośnie ini - jest fajna funkcja przetwarzająca ten plik na tablicę - parse_ini_file()
Przypominam że należy, nie ważne czy plik xml czy ini, odpowiednio zabezpieczyć przed odczytaniem przez osoby do tego niepowołane. Z plikiem php nie ma tego problemu. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
W sumie tez wole pliki *.php niz *.ini ktore poprzednio uzywalem bo trzeba bylo dawac jakies *.htaccess by nie mozna bylo podgladac pliku a w php jest fajny myk dajemy wszystko jako komentarz /*config*/ i gitara gra (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
A co ci broni zapisać ini jako .php?
Kod ;<?php die(); ?> [production] mail.charset = "utf-8" Poza tym takie pliki to się trzyma poza public_html. |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Polecam interfejs niezależny od formatu i konkretne implementacje, które będą ładować poszczególne jej fragmenty z różnych źródeł. Jakich... hmmm... nie sprecyzowałeś, czym wg Ciebie ma być "najlepszy" format. XML, pliki INI, PHP, baza... przechowasz w nich z grubsza to samo. Może w nieco inny sposób będą opisane niektóre elementy, ale wszędzie da się je zachować.
Wybór może być uzależniony od niezbędnej funkcjonalności. Przykładowo, haseł i konfiguracji dostępu do bazy danych raczej nie zmienia się codziennie, więc spokojnie można je trzymać nawet w skrypcie PHP, byleby nie było to zbyt mocno zagrzebane. Jeśli natomiast ma istnieć możliwość personalizacji niektórych ustawień, albo ich edycji po stronie WWW, baza danych byłaby także dobrym wyborem. Kiedyś robiłem benchmark różnych formatów danych (plikowych). Może Ci to nieco pomóc w wyborze, jeśli potrzebujesz informacji o wydajności (w końcu podstawowa konfiguracja musi być ładowana w każdym żądaniu): Formaty danych: benchmark cz. 1 Formaty danych: benchmark cz. 2 |
|
|
![]()
Post
#16
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat MySQL jest niezłym rozwiązaniem, wystarczy napisać klasę potomną od zarządzającej tabelami... A po co się za każdym razem łączyć? Cytat SQLite podoba mi się, ale jak czytałem ma wiele wad, a poza tym mało darmowych serwisów hostingowych obsługuje to rozszerzenie. Wady ma przy stosowaniu jako podstawowa baza przy dużej ilości zapisów. Przy odczycie często nie ma sobie równych. A argument, że wiele darmowych hostingów nie obsługuje, to możesz wcisnąć między drzwi a futrynę. Szukasz innego hostingu, konkurencja jest. Cytat XML nie wiem czemu, ale też mi się podoba . Nie wiem tylko, czy jest jakaś funkcja zamieniająca taki plik na drzewiastą tablicę, coś jak parse_ini_file No jest, ale parsowanie XML jest chyba najwolniejszym rozwiązaniem, gdyż parser musi najpierw go zwalidować, dopiero potem obrabia. Strzał do muchy z armaty - skoro konfiguracja nie będzie migrowała między różnymi środowiskami oprogramowania, to jest to rozwiązanie co najmniej bez sensu. Jest jeszcze YAML, ale dla mnie to próba wrzucenia czegoś na siłę. (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Gdzieś kiedyś czytałem, że najlepszym wyjściem jest zserializowana tablica (nawet szybsza niż kod PHP do parsowania), ale to rozwiązanie dalekie od wygody. (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Choć jeśli chodzi o np. czysty kod PHP, to najlepiej się chyba do edycji nadaje, gdyż wystarczy użyć var_export" title="Zobacz w manualu PHP" target="_manual i z głowy. Wada - nie zachowa nazw stałych... |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 3 Dołączył: 12.04.2007 Skąd: Wągrowiec Ostrzeżenie: (0%) ![]() ![]() |
Albo czasem połączenie zserializowanej tablicy z bazą danych, jak to robi Wordpress (trzyma zserializowane ustawienia dla przykładu wtyczek, w bazie).
YAML - zgadzam się w 100%, wrzucanie czegoś na siłę. Ten post edytował dotangelo 24.07.2009, 15:58:30 |
|
|
![]()
Post
#18
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
~dotangelo, tylko Wordpress tego potem nie porządkuje i zostaje bałagan w bazie. (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Gdzieś kiedyś czytałem, że najlepszym wyjściem jest zserializowana tablica (nawet szybsza niż kod PHP do parsowania), ale to rozwiązanie dalekie od wygody. (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Choć jeśli chodzi o np. czysty kod PHP, to najlepiej się chyba do edycji nadaje, gdyż wystarczy użyć var_export" title="Zobacz w manualu PHP" target="_manual i z głowy. Wada - nie zachowa nazw stałych... W porządku, ale jak później wnikać w plik php i edytować go (pamiętasz, potrzebna jest mi także możliwość swobodnego zapisu/edycji). Czy dałoby się to zrobić tak jak edytowanie pliku? Jeśli tak to nie ma problemu ze stałymi, bo mogę zastosować wzorzec własności/rejestru (property/registry). One czymś się w ogóle różnią? Po prostu chodzi mi o sprawną możliwość zapisu/odczytu. Cytat MySQL jest niezłym rozwiązaniem, wystarczy napisać klasę potomną od zarządzającej tabelami... A po co się za każdym razem łączyć? Co zatem proponujesz? Wzorzec obserwatora + plik który by przechowywał dane z bazy i byłby odświeżany przy zmianach? BTW.: Moje proste pytanie rozwinęło się w interesującą dyskusję. Może by tak podwiesić? Ten post edytował Asmox 24.07.2009, 20:49:29 |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Pozwolę sobie podlinkować do mojego wcześniejszego postu: http://forum.php.pl/index.php?s=&showt...st&p=639445
Wybierz sobie dowolny format, który będzie Ci pozwalał na wygodną modyfikację. Dane będziesz i tak raz odczytywał i zapisywał do cachea w postaci zserializowanych danych - bo one są najszybsze w odczycie. Po edycji danych będziesz wywalał plik cachea, co wymusi jego ponowne utworzenie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 01:51 |