[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