[Php-it] Elaborare un XML da php4: lentezza e troppe risorse usate

Domenico L. domenico.lorusso at pleiade.it
Thu Mar 8 14:26:25 CET 2007


RedFoxy ha scritto:
>
> Purtroppo l'xml non e' composto cosi', ma cosi':
>
> <?xml version="1.0" encoding="ISO-8859-1" ?>
> <dataroot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
> xsi:noNamespaceSchemaLocation="xsd_datibase.xsd" ida="123">
>       <rec op="I" idb="105" idc="123456789012345" dat_ins="20070101" />
>       <rec op="I" idb="105" idc="123456789012346" dat_ins="20061201" />
> </dataroot>
>
> e i dati da estrarre sono ida nel dataroot e i vari op, idb, idc, 
> data_ins dei rec
>
beh... 20000 record di questa natura non dovrebbero darti problemi cavolo!

detto questo non mi sembra ci siano particolari problemi a fare quanto  
detto...

una preg match all  di questa er ti torna un array con ogni record
#\<rec\s.*/\>#sUD

Il tempo di esecuzione è inferiore a 30 secondi su un server vecchio 
(p3) con 36000 record

Se poi sei sicuro di questo formato cmq puoi migliorare ulteriormente 
leggendo le prime 1000 righe dopo la prima e costruirti n file

Cmq se la struttura è così semplice quasi non ti conviene richiamare un 
parser xml,
ma fare tutto con le er

Cioè ti definisci un array di attributi

attr=array('op', 'idb', 'idc', 'data_ins');

e per ogni record (precedentemente messo in un array );

foreach ($attr as $a)
preg_match di "#$a=\"(.*)\"#sUD"

nella posizione 1 dell'array generato dovresti trovare il valore


ciao

-- 
Domenico L.                             icq: 645 44 861

per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]



More information about the Php-it mailing list