Foros del Web » Programando para Internet » PHP »

Optimizar recursos consumidos con Php y Mysql en procesos pesados

Estas en el tema de Optimizar recursos consumidos con Php y Mysql en procesos pesados en el foro de PHP en Foros del Web. Maestros de la programacion, una vez mas recurro a ustedes. Creé un scrip tel cual parsea un archivo de texto (250 MB aprox) y luego ...
  #1 (permalink)  
Antiguo 28/12/2006, 03:13
 
Fecha de Ingreso: mayo-2005
Mensajes: 257
Antigüedad: 18 años, 11 meses
Puntos: 1
Exclamación Optimizar recursos consumidos con Php y Mysql en procesos pesados

Maestros de la programacion, una vez mas recurro a ustedes. Creé un scrip tel cual parsea un archivo de texto (250 MB aprox) y luego lo sube a la base de datos. Elegi hacerlo en php, porque por ejemplo en VIsual Basic leer SOLO EL TEXTO (sin subirlo a la base de datos), leyo 29000 (aprox) lineas en 12 minutos, y el mismo trabajo en PHP (solo tarda 2 min aproximados), Obviamente elegijo PHP.
ahor viene el problema, Obviamente al agregarle lineas para que suba la informacion de cada linea de texto parseado a la base de datos consume un poco de tiempo adicional, mi script los primeros 2 minutos funciona de mil maravillas, coloca en la base de datos aproximandamente 3000 registros por MINUTO (RAPIDISIMO), luego del 2do minuto la optimizacion empieza a caer, subiendo por ejemplo 1000 Registros por minuto y asi sucecivamente hasta llegar a 5 o 6 registros por minutos, ¿Que es lo que esta pasando? ¿tengo que seguir modificando las configuraciones de mi EASYPHP (es lo que utilizo, este tiene apache, php, y mysql incluido)?,
no tengo la menor idea, por favor ayudenme ya que estoy totalmente perdido

Les recuerdo que mi archivo de Texto es un CSV (palabras separadas por comas), en el scrip leo cada linea, separo la linea en un array, (toda la linea es un registro y cada posicion del Array es un campo de dicho registro).
Este es mi codigo php:

Código PHP:

$con 
mysql_connect("localhost",$datos['usuario'],$datos['password']) or die (mysql_error()); 
mysql_select_db($datos['base'],$con) or die (mysql_error()); 

$fp fopen "csv.txt" "r" ); 
while (( 
$data fgetcsv $fp 100000 "," )) !== FALSE ) {                      $i0
   foreach(
$data as $row
     {
      
$campo["$i"]= str_replace("'""´"$row); // Paso todo a un array
      
$i++ ;          
      } 

   
$categorias explode(">"$campo[19]);

   
//Compruebo si esta el dato en la base para no agregar demas.        

   
$busqueda " bla bla bla ";
   
$result mysql_query($busqueda,$con);
   
$comprobacion=@mysql_num_rows($result);
  
   if (
$comprobacion == 0)
      {  
        
//Agrego el dato a labase de datos//
        
     
       
}


 
       
        
 } 
   
fclose $fp ); 
   
mysql_close($con); 

Desde ya muchas gracias por su atencion!
  #2 (permalink)  
Antiguo 01/05/2011, 13:02
 
Fecha de Ingreso: abril-2009
Mensajes: 162
Antigüedad: 15 años
Puntos: 6
Respuesta: Optimizar recursos consumidos con Php y Mysql en procesos pesados

maestros de la programacion xD
  1. no le pongas el @ a las funciones solo disque para que no te aparescan los warning, ya que el php le toca buscar primero si lo tiene o no. mejor usa error_reporting(0);
  2. no utilices para contar registro el mysql_num_rows(). ya esta comprobado que el SELECT COUNT(*) es mucho mejor: (http://paginaweb2.com/post-select-co...sqlnumrows-151)
  3. veo que te falta liberar los recursos generados por la variable $result asi: mysql_free_result($result); va despues de esta linea $comprobacion=@mysql_num_rows($result);
__________________
Manual de Javascript

Última edición por EroChvc; 01/05/2011 a las 13:11
  #3 (permalink)  
Antiguo 01/05/2011, 13:30
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Optimizar recursos consumidos con Php y Mysql en procesos pesados

Cita:
no le pongas el @ a las funciones solo disque para que no te aparescan los warning, ya que el php le toca buscar primero si lo tiene o no. mejor usa error_reporting(0);
Sin lugar a dudas de las peores recomendaciones que alguien puede dar...

Ahora, el problema...

Te has puesto a pensar que seria mucho mejor una aplicación en C/C++? digo, el rendimiento por mucho que sea "mejor" que VB no se puede comparar con un programa por ejemplo creado/compilado en C/C++
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 01/05/2011, 14:58
 
Fecha de Ingreso: abril-2009
Mensajes: 162
Antigüedad: 15 años
Puntos: 6
De acuerdo Respuesta: Optimizar recursos consumidos con Php y Mysql en procesos pesados

Cita:
Iniciado por Nemutagk Ver Mensaje
Sin lugar a dudas de las peores recomendaciones que alguien puede dar...
PORQUE dices que las peores recomendaciones que alguien puede dar ?

En vez de criticar el tiempo que gasta los webmasters para resolver dudas a los usuarios de forosdelweb mejor pienza en resolver dudas con respuestas mas constructivas, la pregunta es: "Optimizar recursos consumidos con Php y Mysql en procesos pesados", NO "cual es el mejor lenguaje de programacion para hacer esta funcion"
__________________
Manual de Javascript
  #5 (permalink)  
Antiguo 01/05/2011, 17:54
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Optimizar recursos consumidos con Php y Mysql en procesos pesados

Optimizar no es ocultar los errores, si tienes ese concepto estas muy mal.

Cita:
la pregunta es: "Optimizar recursos consumidos con Php y Mysql en procesos pesados", NO "cual es el mejor lenguaje de programacion para hacer esta funcion"
El hecho que se pueda optimizar el código para lograr lo que quiere va a llegara un punto en que por mas que quiera seguir optimizando el lenguaje va a llegar a un tope, trabajar con esa cantidad de datos es mucha carga para un lenguaje interpretado, ahora, no se si ya pensaron en la cantidad de procesador y memoria ram que se va a consumir?, en un hosting primero te bloquean la cuenta antes de que truenes el servidor, el buen programador no es el que hace lo que sea con el mismo lenguaje, si no el que utiliza la herramienta mas adecuada para resolver el problema de la mejor manera

Ahora, en un hosting normal jamas vas a poder ejecutar un script mas de 60 segundos, a menos que tengas un dedicado es un script que jamas vas a correr de principio a fin, los recursos que va a consumir serán desorbitados, por eso mismo eh comentado la opción de realizarlo en un programa compilado
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 02/05/2011, 21:52
 
Fecha de Ingreso: abril-2009
Mensajes: 162
Antigüedad: 15 años
Puntos: 6
Respuesta: Optimizar recursos consumidos con Php y Mysql en procesos pesados

cuando le dije lo del @ en las funciones no me referia a que ocultara los errores, solo que si queria ocultar los errores, la opcion que menos recursos genera es error_reporting(0).

y creeme habla la voz de la experiencia, hace tiempo en uno de mis portales tube un problema serio de recursos y me toco hacer pruebas y buscar mucha informacion para la optimizacion.


Cita:
Iniciado por Nemutagk Ver Mensaje
Ahora, en un hosting normal jamas vas a poder ejecutar un script mas de 60 segundos, a menos que tengas un dedicado es un script que jamas vas a correr de principio a fin, los recursos que va a consumir serán desorbitados, por eso mismo eh comentado la opción de realizarlo en un programa compilado
lo siento amigo pero hasta en los hosting gratuitos he ejecutado scripts de mas de 5 minutos ;) y hasta ahora no me echan de ninguno ;)

mas recursos no quiere decir mas tiempo ;)
__________________
Manual de Javascript
  #7 (permalink)  
Antiguo 02/05/2011, 22:03
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Optimizar recursos consumidos con Php y Mysql en procesos pesados

Calma, calma, cada quien tiene su forma de trabajar, no?
Mi recomendacion es no usar @ porque si genera muchos recursos, lo mas correcto seria programar debidamente tratando de eliminar (corregir) cualquier error aunque sea del tipo E_NOTICE...

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #8 (permalink)  
Antiguo 03/05/2011, 01:23
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 5 meses
Puntos: 87
Respuesta: Optimizar recursos consumidos con Php y Mysql en procesos pesados

Si no tiene la base de datos localhost... esta cometiendo un error gravisimo.

Para hacer esta operacion lo mejor es en localhost y luego si copiar toda la base de datos generada al servidor real.

No soy experto en el tema pero tal vez los buffer/cache estan copados; una de las cosas que puede hacer es usar RESET QUERY CACHE en MySQL cada tantos registros procesados.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:24.