Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MSSQL][XML] Przekroczona pamiec
Forum PHP.pl > Forum > Przedszkole
jot
Plik XML o strukturze zamieszczonej ponizej probuje potraktowac kodem php i wrzucic dane do mysql'a w miedzyczasie zmieniajac kodowanie. Niestety dziala tylko przy malych plikach. Przy wiekszym 4,5 megaowym pliku przekracza dozowlona liczbe pamieci...
cos w stylu: Fatal error: Allowed memory size of 33554432
Czy da sie przerobic moj skrypt php zeby nie byl daki pamieciozerny ?

z gory dziekuje za pomoc !

Plik XML o strukturze:

Kod
<?xml version="1.0" encoding="Windows-1250"?>
<colors>
<row id_Model="1" id_Color="1" Color="Biały Banquise" Rgb="FDFDFD" />
<row id_Model="1" id_Color="6" Color="Czarny Onyx" Rgb="000000" />
<row id_Model="1" id_Color="259" Color="Czerwony Ardent" Rgb="711F2B" />
<row id_Model="1" id_Color="2689" Color="Szary Aluminium (metalizowany)" Rgb="ADAAAD" />
<row id_Model="1" id_Color="2240" Color="Szary Fer (metalizowany)" Rgb="7B868C" />
...
</colors>


Probuje potraktowac kodem w miedzyczasie zmieniajac jego kodowanie:

Kod
function puttomysql($a)
{
connect();
$xml = simplexml_load_file('foto/'.$a.'.xml');  

//petla odczytujaca po kolei elementy xml'a
foreach($xml -> row as $element)
{
// petla zczytujaca atrybuty z kazdego row
foreach($element -> attributes() as $nazwa=>$wartosc){
    $wartosc=iconv('utf-8','iso-8859-2',$wartosc);
     $tablica["$nazwa"] = "$wartosc";
      }
//petla wrzucajaca atrybuty wraz z nazwami do tablicy
        while( list($klucz, $wartosc) = each($tablica) )  
        {     
        $pole=$pole.", `".$klucz."`";
        $wartpola=$wartpola.', \''.$wartosc.'\'';  
        }
//tworzenie polecen do mysql
$pole=strchr($pole, " ");
$wartpola=strchr($wartpola, " ");
    
$polecenie="insert into `$a`($pole) values ($wartpola)";
$wynik=mysql_query($polecenie);
//zwolnienie zmiennych i tablicy
unset($pole, $wartpola, $tablica);
   }
franki01
Utwórz plik .htaccess i wpisz w nim poniższy kod:
Kod
php_value memory_limit 200M

Możesz tylko mieć nadzieje, że konfiguracja serwera nie blokuje takiego czegoś.
jot
serwer jest niby ustawiony na 256 megsow ;/

nie ma innego sposobu na wyciagniecie danych z tego typu xmla zeby nie mulilo pamieci ?
wookieb
Np zastosowanie innego parsera xml
http://pl.php.net/xmlreader
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.