Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: XML zamiast MySQL
Forum PHP.pl > Forum > XML, AJAX > XML
chfast
Czy plikami XML można (skutecznie i bezproblemowo) zastąpić bazę MySQL? Jestem prawie pewien, że można, ale może są jakieś uwagi, przeciwskazania itp.
Głównie zastanawiam się nad awaryjnością. W przypadku zwykłych plików tekstowych zawsze wszyscy trąbili, że to się psuje, kaszani i w ogóle różne rzeczy się dzieją. Mi się jeszcze nic takiego nie przydarzyło, ale wcale nie wątpie, że to możliwe. Poza tym wygoda to faktycznie żądna.
No więc czy jest jakieś zagrożenie, że się coś popsuje w pliku XML? No w końcu to plik tekstowy... stąd te obawy.
Jabol
plik XML jest do tego idealny, ale do czasu. W php nie ma wielowątkowości, kolejek, trasakcji itp. Więc taka baza danych (kiedyś coś takiego pisałem i nawet miało działać na zdalnych serwerach, ale zrezygnowałem) nie mogłaby odkładać zapytań w kolejke, więc musiałaby blokować zapytania następne (np. if(file_exists('currently_in_use'), lub flock XML'a)), co spowodowałoby znaczne obniżenie wydajności (SAX, czytanie jest dosyć szybkie i wydajne, ale DOMXML, zmiana i tworzenie, jest bardzo zasobochłonny).

Ogólnie polecam bardzie do zadań, w których nie trzeba danych często zmieniać oraz do stron o mniejszej ogladalności, chyba, że masz bardzo szybki serwer, który będzie mógł pozwolić sobie na takie opuźnienia dla zachowania wielowątkowści oraz spujności!
chfast
Szczerze mówiąc o tym nawet nie pomyślałem. To faktycznie duże utrudnienie.
Zatanawiałem się nad zastosowaniem XML, bo aktualnie nie posiadam bazy SQL. XML byłby pewnym rozwiązaniem.
Narazię jest mi to potrzebne do zarządzania użytkownikami. Użytkownicy zbyt często nie edytują swoich danych. Jednak przy każdej sesji trzeba odczytać dane.
Widze pewne rozwiązanie - zapisywać dane każdego użytkownika do osbnego pliku. Tylko nie wiem jak jest z szybkością przeszukiwania katalogów.

Jeszcze chciałbym się dowiedzieć coś o wymienionych pakietach (żebym wiedział co czytać). SAX jest do odczytu a DOM do tworzenia plików, tak?
Nasuwa się pytanie - w jaki sposób edytować plik?
Jabol
hmm, napisałem przecież
Cytat
SAX, czytanie jest dosyć szybkie i wydajne, ale DOMXML, zmiana i tworzenie
Tworzenie tutaj to nie mam na myśli tworznia plików, ale tworzenie XML'a.
Jeżeli chodzi przeszukiwanie katalogów, to po prostu zapisujesz usera jako user.name.xml i już możesz sprawdzać czy user istnieje za pomocą file_exists. Teraz jest natomiast problem z tym, że pliki takie łatwo byłoby odczytać, więc potrzebowałbyś jakiegoś czegoś w rodzaju katalogu prywatnego (wiele darmowych serwerów je obsługuje). O DomXML i SAX możesz poczytać w manualu, tam jest to naprawdę dobrze wyjaśnione (o ile znasz XML'a, głównie założenia).
Jeżeli robisz oddzielne pliki, to nie ma problemu z wielowątkowością (chyba robisz, że jeden username może miec paru userów winksmiley.jpg )
No tyle z moich rad. Teraz już nie powinieneś mieć problemu.
chfast
Mam problem. Który rozdział manuala opisuje funkcje SAX? Nie moge nic takiego znaleźć.
Jabol
hehe, nazwa jest troche myląca, ale SAX w php jest to po prostu defaultowy XML (co najmniej tak jest to opisane w znanych mi źródłach). Tylko pamiętaj, że działanie SAX'a opiera się na funckjach callbackowych, więc sam tesz będziesz się musiał pomęczyć!
chfast
W takim razie to oznacza, że juz korzystałem z funkcji SAX biggrin.gif

A korzystając z okazji, że wspomniano o funkcjach callbackowych to jak mozna się odwołać do jakiejś metody obiektu (w moim przypadku chodzi o metodę tej samej klasy).
Jabol
a nie jest tak, że zamiast jednego argumentu podajesz dwa (w twoim przypadku ustaw_callback('this', 'metoda')winksmiley.jpg, czy jakoś tak.
chfast
Przyznam, że nie bardzo rozumiem. Dla mnie funkcje callbackowe to nowość.

Dokładniejsze informacje mogą pomóc. Mam problem z funckją xml_set_element_handler().
Normalnie jest tak:
Kod
xml_set_element_handler($parser, 'nazwa_funkcji1', 'nazwa_funkcji2');

Ale jak odwołać się do metody obiektu?

******

Zanim zdąrzyłem to wysłać to już znalazłem odpowiedź. Aby używać parsera w obiekcie należy użyć funkcji xml_set_object(). Podaje składnię:
Kod
void xml_set_object ( resource parser, object object)
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.