Foros del Web » Programando para Internet » PHP »

Php muy lento??

Estas en el tema de Php muy lento?? en el foro de PHP en Foros del Web. Hola a todos: En mi PC con win xp/ Appserv 2.5.9 (Apache 2.2.4/Mysql 5.0.45/Php 5.2.3)... Tengo una db con 3.800.000 registros. Cuando ejecuto una consulta ...
  #1 (permalink)  
Antiguo 19/02/2008, 09:31
 
Fecha de Ingreso: febrero-2008
Mensajes: 17
Antigüedad: 16 años, 2 meses
Puntos: 0
Php muy lento??

Hola a todos:

En mi PC con win xp/ Appserv 2.5.9 (Apache 2.2.4/Mysql 5.0.45/Php 5.2.3)...
Tengo una db con 3.800.000 registros.
Cuando ejecuto una consulta desde la consola de MySQL, la respuesta es rapidísima pero desde PhpMyadmin o desde un script de una página php, es muy lento.

Es más, par probar, dejé solamente dos columnas:
Título y otra donde están las Keywords, con índice en el campo Keywords.

¿Qué puede ser?

Tenía una versión anterior de Appserv, que desintalé y luego instale la más nueva. EL php.ini en el directorio de Windows es el de la nuava instalación.

¿Alguna sugerencia?
  #2 (permalink)  
Antiguo 19/02/2008, 09:33
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Php muy lento??

Generalmente en la consola siempre va a ser rapido, pero cuando se ejecuta desde un script php, existen mas pasos que se hacen para poder realizar la consulta ya que esta no es directa como en la consola. Claro esto se debe tambien a la complejidad del Script o tambien a que esta armado mal, por que no posteas algo de tu codigo, y se ve un poco mejor asi...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #3 (permalink)  
Antiguo 19/02/2008, 12:23
 
Fecha de Ingreso: febrero-2008
Mensajes: 17
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Php muy lento??

Cita:
Iniciado por Bellenger Ver Mensaje
Generalmente en la consola siempre va a ser rapido, pero cuando se ejecuta desde un script php, existen mas pasos que se hacen para poder realizar la consulta ya que esta no es directa como en la consola. Claro esto se debe tambien a la complejidad del Script o tambien a que esta armado mal, por que no posteas algo de tu codigo, y se ve un poco mejor asi...
Bellenger, gracias por responder.

En realidad el código es muy simple , porque solo dejé dos columnas para hacer las pruebas.
Si realizo la consulta desde PhpMyAdmin o un script php es lo mismo:

SELECT titulo FROM articulos WHERE art_tipo LIKE '%libro%' LIMIT 0,300

Si incremento el LIMIT 0,400, la pantalla de PhpMyAdmin queda en blanco.

Eso es todo.
  #4 (permalink)  
Antiguo 19/02/2008, 12:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Php muy lento??

Puede ser que esos 300 registros se esten cargando en memoria y el limite de memoria de tus scripts PHP este en un valor muy bajo.

Incrementa la memoria que tus scripts PHP pueden consumir para que puedas descargar mas datos.

Saludos.
  #5 (permalink)  
Antiguo 19/02/2008, 13:10
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Re: Php muy lento??

Si art_tipo contiene valores fijos y predeterminados, intenta cambiar el LIKE por un simple = quizás notes algún tipo de mejora en el rendimiento de la consulta.

Saludos
  #6 (permalink)  
Antiguo 19/02/2008, 13:10
 
Fecha de Ingreso: febrero-2008
Mensajes: 17
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Php muy lento??

Cita:
Iniciado por GatorV Ver Mensaje
Puede ser que esos 300 registros se esten cargando en memoria y el limite de memoria de tus scripts PHP este en un valor muy bajo.

Incrementa la memoria que tus scripts PHP pueden consumir para que puedas descargar mas datos.

Saludos.
Gracias GatorV:

Haré lo que dices, pero, y perdón por la ignorancia; si dejo solamente 16.000 registros en la tabla, la consulta va rápido, aun usando sentencias más complejas y con full text o Like con por ejemplo varias condiciones WHERE y LIMIT 0,2000 o más; incluso extendiendo la consulta a otra tabla.

El punto es, igual ¿será la memoria?
  #7 (permalink)  
Antiguo 19/02/2008, 13:32
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Php muy lento??

Va mucho mas rapido porque tenes una menor cantidad de registros, lo que significa menor uso de memoria para mysql y un recorrido mas liviano.

En caso de que quieras aumentar el limite de memoria utiliza
Código:
ini_set("memory_limit","32M");
al comienso de tu script.

Saludos.

Última edición por -Nico-; 19/02/2008 a las 13:41
  #8 (permalink)  
Antiguo 19/02/2008, 14:55
 
Fecha de Ingreso: febrero-2008
Mensajes: 17
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Php muy lento??

Cita:
Iniciado por -Nico- Ver Mensaje
Va mucho mas rapido porque tenes una menor cantidad de registros, lo que significa menor uso de memoria para mysql y un recorrido mas liviano.

En caso de que quieras aumentar el limite de memoria utiliza
Código:
ini_set("memory_limit","32M");
al comienso de tu script.

Saludos.
Gracias Nico:

Incremente la memoria desde php.ini, no sé si está bien; pero para que se acelerara la consulta (siempre hablando de la tabla con dos columnas), tuve que poner: memory_limit = 500M

A todos lo que colaboran, muchas gracias y perdón por ser tan insistente y por los bolasos que intento, que seguramente ustedes resolverían.
El tema, como es obvio, es que no doy en la tecla ni ahi!.

Si bien leí todo lo que me dijeron, no me entra en la cabeza la diferencia tan gigante entre ejecutar la misma sentencia desde la consola (fracciones de segundo) comparando desde PhpMyadmin que demora 4 segundos o más para mostrar 500 registros.

NOTA: todavía no probé como dijo Nico
Código:
ini_set("memory_limit","32M");
al comienso de tu script. Porque lo estoy hciendo desde PhpMyAdmin.
  #9 (permalink)  
Antiguo 19/02/2008, 16:07
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Php muy lento??

Porque phpmyadmin y tu web son dos aplicaciones en php que tienen que crear una conexion a la base, generar el codigo, tratar con los datos (ya sea validaciones u otras operaciones).

Mientras que desde la consola el unico proceso afectado es mysql.

Desde la consola haces la query, mysql responde. (1 proceso afectado)

Desde tu aplicacion web, php hace la consulta, mysql le devuelve los datos, php utiliza esos datos en distintas operaciones. (3 procesos afectados, ya que php requiere de apache)

Entonces es normal que demore mas.
  #10 (permalink)  
Antiguo 19/02/2008, 18:02
 
Fecha de Ingreso: junio-2007
Ubicación: por ahi
Mensajes: 262
Antigüedad: 16 años, 10 meses
Puntos: 4
Re: Php muy lento??

Creo que apesar de que en la consola de Mysql este corriendo aparentemente bien, hay un problema de normalizacion claro en la Base de Datos. uno no deberia seleccionar un tipo por una etiqueta de texto ( un campo Varchar), eso es en contra de cualquier Script.

Sinceramente el problema es la estructura de la base de datos y si quieres tener 3.800.000 registros, eso ya son ligas mayores y como tal la busqueda de un tipo debe ser por lo menos un campo entero ( int) que este indexado.
  #11 (permalink)  
Antiguo 19/02/2008, 20:35
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Php muy lento??

Tus tablas tienen indices...??? si no es asi revisa este link...
Optimizando consultas mysql...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #12 (permalink)  
Antiguo 19/02/2008, 20:43
 
Fecha de Ingreso: febrero-2008
Mensajes: 17
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Php muy lento??

Cita:
Iniciado por hernandos Ver Mensaje
Creo que apesar de que en la consola de Mysql este corriendo aparentemente bien, hay un problema de normalizacion claro en la Base de Datos. uno no deberia seleccionar un tipo por una etiqueta de texto ( un campo Varchar), eso es en contra de cualquier Script.

Sinceramente el problema es la estructura de la base de datos y si quieres tener 3.800.000 registros, eso ya son ligas mayores y como tal la busqueda de un tipo debe ser por lo menos un campo entero ( int) que este indexado.
Hola Hernandos y gracias por responder.

Tienes toda la razón, según Tú lo interpretas, debería ser un campo Int.
El tema es que, solo puse ´tipo' por dar un ejemplo de lo que estaba buscando. Error mío, perdón. Sin embargo más arriba también había comentado que eran keywords y utilizaba full text.
El campo debe ser varchar (podría ser text, pero como uso MySQL 5.0.51 que permite varchar de varios miles y con eso me sobra...) por que son varios términos dentro del campo sobre el que realizo las consultas.

La cuestión es que, aun haciendo una consulta simple (como la que di de ejemplo), es lentísimo.

Espero haberme explicado mejor y nuevamente perdón por no haber sido claro.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 01:30.