Ante todo decir que soy novato en php, y espero con vuestra ayuda resolver el problema que me ha surgido.
Estoy tratando de realizar un pequeño programa en php que me sustituya el contenido de un nodo por otro en un xml.
Lo realizo con dom , el xml contiene 56.823 lineas y me muestra el error :
Fatal error: Maximum execution time of 1200 seconds exceeded in C:\xampp\htdocs\html\cambiocodigo.php on line 288
y solo cambia unas cuantas lineas.
El fichero contiene muchas lineas? o es la forma incorrecta de realizarlo?
Esto es un pequeño fragmento del php.
Código PHP:
<?php
set_time_limit(1200);
$xml = new DOMDocument();
$fichero="fic.xml";
$xml->load($fichero);
$elementos=$xml->getElementsByTagName('Sector');
for ($i=0; $i<$elementos->length; $i++) {
$sectorviejo=$elementos->item($i)->nodeValue;
switch ($sectorviejo) {
case 'Hombre > ABRIGO':
$nsector='341101';
codigoabrigou($nsector,$fichero);
break;
default:
echo "<font color='red'>El sector ".$sectorviejo." no encuentra codigo a sustituir </font>";
echo "<br>";
break;
}
}
function codigoabrigou($sectornuevo,$fic){
$xml = new DOMDocument();
$fichero=$fic;
$xml->load($fichero);
$elementos=$xml->getElementsByTagName('Product');
foreach ($elementos as $producto) {
for ($i=0; $i <$elementos->length ; $i++) {
$sector=$producto->getElementsByTagName("Sector")->item(0)->nodeValue;
$sviejo=$producto->getElementsByTagName("Sector")->item(0);
}
if($sector==="Hombre > ABRIGO"){
$cdata=$xml->createCDATASection($sectornuevo);
$sviejo->childNodes->item($i);
$sviejo->replaceChild($cdata,$sviejo->childNodes->item(0));
$xml->save($fichero);
echo "se ha cambiado el sector ".$sector." por ".$sectornuevo;
echo "<br>";
}
}
}
?>
Código:
<?xml version="1.0" ?> <Sincro_details> <Products> <Product> <Product_id><![CDATA[2583]]></Product_id> <Title><![CDATA[producto prueba]]></Title> <Description><![CDATA[2014-2015]]></Description> <Price><![CDATA[20]]></Price> <Photos> <Photo><![CDATA[http://ruta/fotos/14201511471155383).jpg]]></Photo> <Photo><![CDATA[http://ruta/fotos/1832015192504122082.jpg]]></Photo> <Photo><![CDATA[http://ruta/1832015192504118464.jpg]]></Photo> <Photo><![CDATA[http://ruta/fotos/1832015192505647103.jpg]]></Photo> <Photo><![CDATA[]]></Photo> </Photos> <Keywords> <Keyword><![CDATA[]]></Keyword> <Keyword><![CDATA[]]></Keyword> <Keyword><![CDATA[]]></Keyword> <Keyword><![CDATA[]]></Keyword> <Keyword><![CDATA[]]></Keyword> </Keywords> <Unit_stock><![CDATA[1]]></Unit_stock> <Sector><![CDATA[341101]]></Sector> </Product> </Products>