![]() |
![]() |
![]()
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ą) |
|
|
![]() |
![]()
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. |
|
|
![]()
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. |
|
|
![]()
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. |
|
|
![]()
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 20:17 |