Potrzebowałem stworzyć skrypt którym duży plik xml (prawie 250 mb) przerzucę do bazy MySQL.
Na drodze stanęły mi dwie kłody: pamięć ram komputera to tylko 64mb oraz limit wykonywania skryptu 30 sek.
Poniżej przedstawię wam kod który w moim mniemaniu teoretycznie powinien chodzić jednak wciąż dostaję informację o przekroczonym czasie.
$fileName = "baza-produktow.xml"; $table = 'xxxx'; $_SQL['prefix'] = 'xxxx_xml_'; $_SQL['table'] = $table; $_SQL['query'] = ''; $limit = $xmlData['cnt'] = 1000; while($xmlData['cnt'] == $limit) { { break; } $start = $limit*i; $xmlData = getTagFromXML($fileName, $table, $start, $limit); //ta funkcja wyciąga X "rekordów" począwszy od X-ego, i oddaje w stringu $arrayData = createArrayFormXML($xmlData['data']); //ta z podanego stringa robi tablice z danymi $_SQL = createSqlForOffer($_SQL, $arrayData); //ta tworzy zapytanie sql do bazy danych $i++; }
Jeśli byłby ktoś wstanie podpowiedzieć ewentualne inne rozwiązanie byłbym wdzięczny.
Pozdrawiam