Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Szybsze przetwarzanie dużych plików XML
Forum PHP.pl > Forum > XML, AJAX
Tomplus
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ą)
Pyton_000
Zmień serwer, plik 5MB to jest żaden plik.
Pamiętam jak aktualizowaliśmy w sklepie stany XMLem który ważył 1,5GB 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.
Tomplus
Ja chętnie bym zmienił serwer, ale niestety nie podejmę takiej decyzji, bo nie mogę.
Muszę próbować poprawić wydajność na tym co mam.
Crozin
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.
Tomplus
Rozumiem. Nie zrobiłem w tym wszystkim jednej rzeczy. Czyli móglbym wszystkie operacje UPDATE wykonać w jedny zapytaniu multi_query.
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.