![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 16.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Jestem w miarę początkującym i doszedłem do problemu z którym nie mogę sobie poradzić, mianowicie: jest sobie baza danych SQL, jest skrypt PHP który ma za zadanie wczytanie danych z pliku XML. Plik XML - dość duży - około 16 tys pozycji. Skrypt 'leci' po kolei i wczytuje dane z pliku, jeśli tylko wyświetlam te dane to trwa to moment- natomiast gdy robię UPDATE do bazy trwa to bardzo długo i wysypuje się po pewnym czasie. Prawdopodobnie mam gdzieś błąd który zwalnia całą procedurkę - czy mogę prosić o pomoc forumowiczów ? CODE $data = simplexml_load_file(file.xml'); foreach($data -> produkty as $produkty) { foreach($produkty -> produkt as $produkt) { $id = (string) $produkt['id']; $cena_netto = (string) $produkt['cena_netto']; $dostepny = (string) $produkt['dostepny']; if ($dostepny>0) { $query = " UPDATE produkt SET wyswietlony=1,cena_netto='$cena_netto' WHERE kod_producenta LIKE '$id' "; $result = mysql_query($query) or die("Query UPDATE is failed"); } } } Ten post edytował JohnyBB 16.05.2008, 13:52:09 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 16.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przy każdym zapytaniu modyfikuję tylko jeden wiersz w tabeli.
Sęk w tym że ta baza instnieje i nie mogę jej zmieniać - więc zmiana klucza odpada. Bardzo długo znaczy - około godziny. Wysypuje się w taki sposób, ze wyświetla się "nie można odnaleźć strony itd." nie pojawia się zatem żaden Error - pewnie jest przekroczony czas jakiś. LIKE nie jest niezbędne - takie znalazłem rozwiązanie - czyli zamieniam na = --- Cytat 1. Podzielić plik na mniejsze paczki i każdą paczkę z osobna mielić (samo dzielenie pliku może się nie udać z powodu dużego rozmiaru pliku). 2. Uruchomić skrypt w konsoli. ad1 - odpada - nie ma na to czasu bawić się z krojeniem xml'a 1 dziennie. ad2 - można jaśniej ? jak uruchomić skrypt w konsoli ? Cytat Wg mnie. wykonywanie 16tys razy mysql_query jest nieoptymalne. Z doświadczenia wiem, że lepiej jest zrobić konwersje pliku XML do formatu csv (lub innego rozdzielonego dowolnymi znakami). Oczywiście za pomocą PHP w pętli (szybkość będzie taka jak przy wyświetlaniu). Następnie wywołanie w mysql LOAD DATA INFILE nazwa_pliku..... która załaduje dane do bazy. czyli LOAD DATA INFILE wykonuję z MyAdmina ? po uprzedniej zamianie XML na inny format ? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 04:40 |