Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> analiza danych duzego pliku XML
AcidBurnt
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

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


Witam

Sprawa taka pliczek XML wazy 32 mb, w nim mam dane na temat SMSów logosłow, dzwonków, itp z PP wapster.pl no i problem z racji wielkosc pliku nie zabardzo moge Sobie poradzic z jego przecytaniem, wczytaniem do tablicy itp z racji ograniczenia pamieci na moim serwerze do 20. wiec wpadlem na pomysl i dziele Sobie plik na kilka mniejszych

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <wapsterdump>
  3.  <authors>
  4.    <item id="1674" name="000" />
  5.    .
  6.    .
  7.    .
  8.    <item id="1121" name="50 Cent feat. Olivia" />
  9.    <item id="824" name="52 Dębiec" />
  10.  </authors>
  11.  <manufacturer name="Nokia" id="1">
  12.   ..,  tutaj informacje na temat dzwonków logosów itp
  13.  </manufacturer>
  14.  <manufacturer name="Siemens" id="2">
  15.  .
  16.  .
  17.  .
  18.  </manufacturer>


no i napisałem Sobie dla niego coś takieg:

  1. <?php
  2. error_reporting(E_ALL^E_NOTICE);
  3. echo time()."<br />";
  4. $uchwyt = fopen ("newdump.xml", "r");
  5. if ($uchwyt) {
  6. while (!feof($uchwyt)) {
  7. $buffer = fgets($uchwyt, 4096);
  8.  
  9. if($authors_open){
  10. fwrite($authors, $buffer);
  11. }
  12. if(preg_match('/<authors>/', $buffer)){
  13. $authors = fopen("authors.xml", 'w+');
  14. fwrite($authors, $buffer);
  15. $authors_open = 1;
  16. }
  17. if(preg_match('/</authors>/', $buffer)){
  18. fclose($authors);
  19. $authors_open = 0;
  20. }
  21.  
  22. if($com_open){
  23. fwrite($com, $buffer);
  24. }
  25. if(preg_match('/<manufacturer(.*?)>/', $buffer)){
  26. preg_match('/<manufacturer name="(.*?)" id="[0-9]{1,2}">/', $buffer, $m);
  27. $com = fopen("".$m[1].".xml", "w+");
  28. fwrite($com, $buffer);
  29. $com_open = 1;
  30. }
  31.  
  32. if(preg_match('/</manufacturer>/', $buffer)){
  33. fclose($com);
  34. $com_open = 0;
  35. }
  36. }
  37. fclose ($uchwyt);
  38. }
  39. echo time()."<br />";
  40. ?>


czyli lece przez cały plik wiersz po wierszu i dziele duzy na małe podzionego na poszczegolne telefony: nokia, siemes tip

no tylko pytanie czy moge to jakos zoptymalizowac czasowo, gdyz operacja ta trwa na serwerze w nazwa.pl 24-28 sekund ;/ moj komp potrzebuje prawie 40.. no a do tego jeszcze bedzie miala dojsc analiza poszczegolnych modeli, sprawdzenie roznic miedzy moja baza a tymi danymi, i wlasnie tez sie tutaj zastanawiam czy docelowo przewalac wszystko do bazy, czy trzymac reszte danych tylko w plikach XML, podzielic konkretne modele na wiecej plików, no w jednym informacje o logach, w innym o dzwonkach, i nie korzystac z bazy....

jakies pomysły? z góry dzieki za wszelkie sugestie.

aha i po tym podziele najwiekszym plikiem jest NOKIA.xml wazy okolo 7.5 MB, no i niesteyt dalej wczyanie tego do jakies tablicy czy cos jest problemem

Ten post edytował AcidBurnt 19.06.2006, 17:02:48
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: 22.08.2025 - 05:43