Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [xml][php][mysql]Duże pliki do bazy MySQL
b_chmura
post
Post #1





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


Witam
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.
  1. mysql_connect('xxxx', 'xxxx', 'xxxx') or die('Bład! nie można się połączyć z bazą');
  2. mysql_select_db("xxxx") or die('Błąd! nie można wybrać tabeli');
  3. mysql_query("SET NAMES 'utf8'");
  4.  
  5. $fileName = "baza-produktow.xml";
  6. $table = 'xxxx';
  7.  
  8. $_SQL['prefix'] = 'xxxx_xml_';
  9. $_SQL['table'] = $table;
  10. $_SQL['query'] = '';
  11.  
  12.  
  13. $timeLimit = ini_get('max_execution_time');
  14. $time = time();
  15. $limit = $xmlData['cnt'] = 1000;
  16. $i = (empty($_GET['start']))? 0: $_GET['start'];
  17.  
  18. while($xmlData['cnt'] == $limit)
  19. {
  20. if(date("s", time())-date("s", $time) >= ($timeLimit/2)) //teoretycznie jeśli skrypt będzie wykonywał się dłużej jak połowa ustalonego czasu strona powinna się przeładować i zacząć od momentu na którym skończyła
  21. {
  22. header("Location: ?start=".$i);
  23. break;
  24. }
  25.  
  26. $start = $limit*i;
  27.  
  28. $xmlData = getTagFromXML($fileName, $table, $start, $limit); //ta funkcja wyciąga X "rekordów" począwszy od X-ego, i oddaje w stringu
  29. $arrayData = createArrayFormXML($xmlData['data']); //ta z podanego stringa robi tablice z danymi
  30. $_SQL = createSqlForOffer($_SQL, $arrayData); //ta tworzy zapytanie sql do bazy danych
  31. mysql_query($_SQL['queryData']);
  32. mysql_query($_SQL['queryAttributes']);
  33. $i++;
  34. }


Jeśli byłby ktoś wstanie podpowiedzieć ewentualne inne rozwiązanie byłbym wdzięczny.

Pozdrawiam

Ten post edytował b_chmura 1.10.2010, 10:27:57
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 10:49