Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ XML _ XML zamiast MySQL

Napisany przez: chfast 30.05.2003, 18:46:49

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.

Napisany przez: Jabol 30.05.2003, 19:15:29

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!

Napisany przez: chfast 30.05.2003, 19:29:55

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?

Napisany przez: Jabol 30.05.2003, 19:37:40

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.

Napisany przez: chfast 4.06.2003, 18:12:55

Mam problem. Który rozdział manuala opisuje funkcje SAX? Nie moge nic takiego znaleźć.

Napisany przez: Jabol 4.06.2003, 18:23:36

hehe, nazwa jest troche myląca, ale SAX w php jest to po prostu http://php.net/manual/pl/ref.xml.php (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ć!

Napisany przez: chfast 4.06.2003, 20:26:48

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).

Napisany przez: Jabol 4.06.2003, 20:28:26

a nie jest tak, że zamiast jednego argumentu podajesz dwa (w twoim przypadku ustaw_callback('this', 'metoda')winksmiley.jpg, czy jakoś tak.

Napisany przez: chfast 4.06.2003, 20:43:18

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)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)