Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/10/2008, 08:55
josefrl
 
Fecha de Ingreso: agosto-2008
Ubicación: Caracas
Mensajes: 51
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Lentitud extrema con php

Hola este vendria siendo uno de los algoritmos de comparacion, basicamente lo que estoy utilizando son if anidados dentro de bucles for.

(las variables $matriz8 y $cont las obtengo de la conexion a la bd que hago antes de entrar a este algoritmo)

Parte del codigo seria el siguiente:
//**********************************************

$archivo = file("ArchivoaValidar.txt");
$lineas = count($archivo);
for ($k=0; $k < $lineas; $k++)
{
$datosfilas = explode(",",$archivo[$k]);
$codigoprod = str_replace(" ","",$datosfilas[0]);
$lengcodigo = strlen($codigoprod);

if ($lengcodigo ==8)
{
$codigos8=$codigos8+1;
$codigopais= substr($codigoprod, 0, 3); // bcd
if ($codigopais ==899)
{
$contador1=0;
$encontradoa=0;
$encontrador=0;
for ($m=0; $m < $cont; $m++)
{
$matrizsub8= $matriz8[$m];
$matrizsub8_2=str_replace(" ","",$matrizsub8[0]);
$matrizsub8_3= $matrizsub8[1];
if ($codigoprod == $matrizsub8_2)
{
$contador1=$contador1+1;
if ($matrizsub8_3=="A")
{
$encontradoa=$encontradoa+1; $contencontradoa=$contencontradoa+1;
fwrite($encontradoatxt, $archivo[$k]);
unset($archivo[$k]);
break 1;
}
else if ($matrizsub8_3=="R")
{ $encontrador=$encontrador+1; $contencontrador=$contencontrador+1;
fwrite($encontradortxt, $archivo[$k]);
unset($archivo[$k]);
break 1;
}
}
}
if ($contador1=0)
{
$contcodnovalido=$contcodnovalido+1;
fwrite($codnovalidotxt, $archivo[$k]);
unset($archivo[$k]);
}
}
else
{
$encontradocodpais=0;
for ($i=0;$i<$cont2;$i++)
{
$matrizpaisgs1=$matrizpais[$i];
$matrizpaisgs1_2=str_replace(" ","",$matrizpaisgs1[0]);
if ($codigopais==$matrizpaisgs1_2)
{ $encontradocodpais=$encontradocodpais+1;
break 1;
}
}
if ($encontradocodpais>0)
{
$contencontradocodpais = $contencontradocodpais+1;
fwrite($encontradocodpaistxt, $archivo[$k]);
unset($archivo[$k]);
}
else
{ $contcodnovalido=$contcodnovalido+1;
fwrite($codnovalidotxt, $archivo[$k]);
unset($archivo[$k]);
}
}
}
//**********************************************

Este codigo solo valida los codigos de longitud 8, pero manteniendo la misma estructura se hacen otras validaciones para los codigos de longitud 12, 13 y 14.
El archivo que es producto de las validaciones contra la BD es cargado en el mismo servidor donde se ejecuta la pagina en la misma ruta donde esta alojada la misma.

//*******************************************
Aqui te coloco tambien la forma en la que almaceno en memoria uno de las consultas a la bd :

$conectID = mssql_connect("ejemplo","user","password");
mssql_select_db("DB_prueba");
if (!$conectID)
{
die('<h1><center>Imposible establecer conexión</center></h1>');
}
echo '<h1><center>conexion satisfactoria codigos de longitud 8</h1></center>';
$sql = "SELECT codigo_int, status from DB_prueba.dbo.producto where len (codigo_int)=8;";
$result = mssql_query($sql) or die("MS-Query Error in select-query");
while ($row = mssql_fetch_array($result))
{
$matriz8[$cont]=$row;
$cont=$cont+1;
}
mssql_close ($conectID);