Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/09/2008, 12:42
cnyx
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Respuesta: de repente mysqul_query() falla cuando siempre funcionaba bien

Hola,
ante todo gracias por tu respuesta.
Por partes; la consulta es correcta ya que se trata de un simple select con una sola condicion where. Ademas esta consulta lleva funcionando dos años y no ha cambiado en ningún momento.
Ahora bien, tu comentario me ha sugerido una idea de cual podria ser el problema y la verdad no se si es posible o es descabellado. Paso a comentarla:
la consulta basicamente es así:

select * from tabla1 where foto='s' order by id desc

Esta consulta me seleccionaria todas las filas que tengan el valor 's' en el campo foto y las ordenaria por id (entero que ademas es clave primaria) de mayor a menor.

Basicamente de todas esas filas yo quiero mostrar en la web solo las 15 ultimas (de ahi la ordenacion decreciente) entonces lanzo un bucle while donde la condicion es la instruccion mysql_fetch_array() y un contador. Sea porque mysql_fetch_array() devuelve false (porque no encuentra mas filas con la condicion) o porque el contador llega a 15, el bucle finaliza. Como tengo 11.000 filas y hay unas 8000 con foto, al final el bucle siempre finaliza porque se ha llegado a 15 en el contador.

Mi pregunta es la siguiente. puede ser que por hacer un select "tan grande" no haya suficiente memoria para ejecutarlo y por eso falle, o por el contrario la memoria se va usando a medida que va avanzando la funcion mysql_fetch_array(), en cuyo caso no existiria tal problema de memoria. No estoy diciendo que se coma la RAM del servidor pero igual las configuraciones de los servidores las hacen para que uno no pueda consumir mas de 30MB de RAM (por poner un ejemplo) y esa consulta esta requiriendo 32MB.
Sinceramente no tengo ni idea, pero mi pregunta es esa, si es posible que al hacer la consulta con el select intente ya reservar la memoria necesaria para contener todas las filas en RAM, y por falta de espacio falle.

Gracias otra vez.
Saludos.