[Php-it] Elaborare un XML da php4: lentezza e troppe risorse usate
RedFoxy
redfoxy at redfoxy.it
Thu Mar 8 12:53:38 CET 2007
Ciao a tutti,
Tempo addietro h oscritto qui per chiedervi come elaborare dei file xml
per importare dei dati...
Ora diciamo che qualcosa l'ho fatta, grazie anche all'aiuto di qualcuno
di #php, pero', quando provo a passare xml contenenti una certe mole di
record (ho provato 20000 record circa), il sistema si "pianta" stando
diversi secondi per elaborare, senza contare la quantita' di memoria
usata (piu' di 10mb!) in quanto tutti va a finire in alcuni array per
poi poterlo lavorare al meglio.
In pratica il sistema no nfa' altro che leggere il file XML con un classico:
if (!($fp = fopen($filexml, "r"))) {
die("could not open XML input");
}
$buffer = fread($fp, filesize($filexml));
fclose($fp);
subito dopo con:
$xmlpar = xml_parser_create ("");
if (xml_parse($xmlpar, $contents))
{
Verifico se l'XML e' strutturato correttamente, poi con una serie di
preg_match, cicli foreach e simili cerco i vari parametri e li metto in
determinati array, verificando sempre che la struttura e tutto il resto
sia valido ed elaborabile, ora purtroppo fra cicli (alla fine si riduce
tutto ad un ciclo, quello che prende il record e lo elabora cercando le
variabili dentro i tag), ma questo sembra andare in crisi di tempo e
risorse usate gia' con soli 20.000 record, mentre prevedo di ricevere
anche moli piu' grosse...
Per evitare di uccidere il server pensavo di far inviare i file,
controllo primario rapido per essere sicuro che il file sia realmente
l'xml che aspetto, lo salvo e lo processo dopo quando c'e' meno casino
sul server... ma lo stesso se un file contiene molti record rischio che
la procedura si interrompa per il troppo tempo...
Ho pensato di splittare i file una volta ricevuti (creare X file XML
utilizzando l'header di quello inviato) ma per farlo dovrei
elaborarlo... Percio' sarei sempre punto e accapo...
Avete in mente qualcosa per accelerare e migliorare il tutto?
Grazie e ciao ^^
--
RedFoxy
A fox around web
Power at fox for a yiffing world!
Un forum per tutte le esigenze: http://www.forum.redfoxy.it
More information about the Php-it
mailing list