Na serwerze pamięc tymczasowa jest ustawiona na 128 MB, więc pobranie tego pliku z zewnętrznego serwera działa bez problemu.
Problem pojawia się jednak przy jego odczycie i wykonywaniu operacji na podstawie odczytanych informacji, a ściślej mówiąc w tym kodzie:
<?php require '../config.php'; $file = "cennik.xml"; $xml_parser = xml_parser_create(); xml_parse_into_struct($xml_parser, $data, $vals); xml_parser_free($xml_parser); $super = ''; foreach ($vals as $array) { switch ($array['tag']) { case 'GRUPAGLOWNA': if ($array['type'] == 'open') { mysql_query ("INSERT INTO categories VALUES ('" . $array['attributes']['ID'] . "', '', '" . $array['attributes']['NAZWA'] . "');") or die (mysql_error()); $super = $array['attributes']['ID']; } break; case 'PODGRUPA': if ($array['type'] == 'complete') { mysql_query ("INSERT INTO categories VALUES ('" . $array['attributes']['ID'] . "', '" . $super . "', '" . $array['attributes']['NAZWA'] . "');") or die (mysql_error()); } break; } } ?>
Co kończy się błędem:
Fatal error: Out of memory (allocated 43515904) (tried to allocate 32 bytes) in /internal/parser.php on line 16
Kiedy powyższy skrypt uruchamiam dla małej części pliku cennika, to wszystko działa. Więc pytanie mam takie: czy da się jakoś rozbudować powyższy skrypt, aby poradził sobie z takim plikiem czy też jest jakiś inny sposób (np. rozbicie dużego pliku na kilka mniejszych)?