Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pliki konfiguracyjne dla aplikacji internetowych, jaki najlepszy format?
Asmox
post
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.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Fifi209
post
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)
Go to the top of the page
+Quote Post
erix
post
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? [;
Go to the top of the page
+Quote Post
dotangelo
post
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.
Go to the top of the page
+Quote Post
ayeo
post
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.
  1. <?php
  2. //plik, który zostanie zaincludowany
  3. $database_configuration['user'] = "AdamMickiewicz";
  4. $database_configuration['pass'] = "1828";
  5.  
  6. return $database_configuration;
  7. ?>



Pozdrawiam!
Go to the top of the page
+Quote Post
Crozin
post
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.:
  1. <?
  2. $config = new IniConfig();
  3. $conifg = new XMLConfig();
  4. $config = new SqliteConfig();
  5. $config = new YAMLConfig();
  6. $config = new PHPConfig();
  7.  
  8. $config->open('/path/to/file');
  9. $config->read('my var');
  10. $config->save();
  11. $config->whatever();
  12. ?>
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
Go to the top of the page
+Quote Post
Elektryk
post
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
Go to the top of the page
+Quote Post
Asmox
post
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...Zastanawiam się nad MySQL albo XML, chociaż nie wiem jak by można edytować taki plik.
Go to the top of the page
+Quote Post
marcio
post
Post #9





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
Kasyx
post
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)
Go to the top of the page
+Quote Post
viking
post
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.
Go to the top of the page
+Quote Post
dotangelo
post
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.
Go to the top of the page
+Quote Post
marcio
post
Post #13





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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)
Go to the top of the page
+Quote Post
viking
post
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.
Go to the top of the page
+Quote Post
Zyx
post
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
Go to the top of the page
+Quote Post
erix
post
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...
Go to the top of the page
+Quote Post
dotangelo
post
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
Go to the top of the page
+Quote Post
erix
post
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)
Go to the top of the page
+Quote Post
Asmox
post
Post #19





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

Ostrzeżenie: (0%)
-----


Cytat(erix @ 24.07.2009, 16:43:39 ) *
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(erix @ 24.07.2009, 16:43:39 ) *
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
Go to the top of the page
+Quote Post
Crozin
post
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.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.09.2025 - 01:51