Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Szybsze przetwarzanie dużych plików XML, Czyli jak poprawić wydajność skryptu.
Tomplus
post
Post #1





Grupa: Zarejestrowani
Postów: 1 884
Pomógł: 231
Dołączył: 20.03.2005
Skąd: Będzin

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


Witam,

Kilka lat temu stworzyłem skrypt do przetwarzania plików XML -> SQL.
Działał szybko i tak jak chciałem, jednak plik XML był mały <500kb

Z czasem rósł i rósł, a teraz ma 5 Mb. Gdybym sam tworzył ten plik (własnym programem) to udałoby mi się zmniejszyć jego objętość do 3Mb.

Postanowiłem zmienić architekturę skryptu, w sumie napisać od nowa.
Jedną ze zmian było zmiana klasy SimpleXML na XMLReader. Wydajność poprawiła się piorunująco, ale wciąż serwer mieli i mieli. (host nazwa.pl)

Baza danych ma za zadanie aktualizować ceny w sklepie internetowym, a skrypt prze konwertować bo nie można wrzucić danych 1:1 tylko trzeba zrobisz szereg czynności czyszczące brudy.

Prosiłbym o rady... jak przyśpieszyć działanie skryptu który mieli 30s do nawet 2 minut.

- Mój pomysł na przyszłość, to podział bazy na paczki po 1000 rekordów i dopiero je przetwarzać.
- Wczytywać poprzedni plik, archiwalny i porównywać najpierw które rekordy się zmieniły i je tylko przetwarzać. (acz nie wiem czy wczytanie 2x po 5Mb nie będzie jeszcze jeszcze gorzej z wydajnością)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Zmień serwer, plik 5MB to jest żaden plik.
Pamiętam jak aktualizowaliśmy w sklepie stany XMLem który ważył 1,5GB (IMG:style_emoticons/default/smile.gif) Co z tego że wykonywał się 30 min, to było 1 raz dziennie więc problemu nie było.

Najprawdopodobniej Twój problem nie leży w XML czy PHP a w BD.
Go to the top of the page
+Quote Post
Tomplus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 884
Pomógł: 231
Dołączył: 20.03.2005
Skąd: Będzin

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


Ja chętnie bym zmienił serwer, ale niestety nie podejmę takiej decyzji, bo nie mogę.
Muszę próbować poprawić wydajność na tym co mam.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Jak już zwrócono Ci uwagę, problemem najprawdopodobniej nie jest odczyt XML-a, a baza danych.

1. Zmierz czasy odczytu danych z XML-a i operacji na bazie.
2. Upewnij się, że operacje na bazie są objęte transakcją.
3. Ewentualnie pokaż kod.
Go to the top of the page
+Quote Post
Tomplus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 884
Pomógł: 231
Dołączył: 20.03.2005
Skąd: Będzin

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


Rozumiem. Nie zrobiłem w tym wszystkim jednej rzeczy. Czyli móglbym wszystkie operacje UPDATE wykonać w jedny zapytaniu multi_query.
Go to the top of the page
+Quote Post

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: 2.10.2025 - 20:17