Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/04/2012, 09:11
Avatar de humanista
humanista
 
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Server dice "MySQL server has gone away"

Hola, tengo un código que combina el simplepie (www.simplepie.org), es decir un lector de rss, con programación php que hace cosas con la base de datos.

Me explico, hago un WHILE en el que el simplepie lee cada web (mediante rss) y lo que me traigo de cada una lo almaceno en la base de datos (INSERT). Al final, saco con SELECT todo lo almacenado.

El tema es que todo este proceso se hace con unas 20 webs (20 ciclos del WHILE) o incluso más y a veces me sale el error MySQL server has gone away.

He hablado con los del hosting y me contestan esto, entiendo que con toda la razón del mundo:

No podemos ampliar el timeout porque perjudicaria seriamente al servidor. Tenga
en cuenta que si se acumulan sentencias de la base de datos abierta, por
retrasos, se acabara saturando el servidor y se caera. Por lo tanto tenemos que
dejar las configuraciones de esa manera para mantener una cierta estabilidad.
Si ve que el simplepie le falla, intente hacer uso de otro sistema que recoja
primero los datos sin mantener las conexiones de la base de datos abierta y una
vez recogidos los datos los introduzca, sería lo mas logico.


El caso es que el tiempo antes de que se caiga el servidor es de 30 segundos.

Qué puedo hacer? Vale, la solución fácil es consultar menos webs pero necesito que sean bastantes.

He pensado que en lugar de insertar en la base de datos, que lo acumule en una array y así me evito el INSERT y el SELECT. Pero me temo que eso sólo me ahorrará unos pocos segundos, no más de 5 o así.

No sé si a alguien se le ocurre cómo hacerlo. Lo que dice de "recoger los datos sin mantener las conexiones de la base de datos abierta" no lo entiendo.

Gracias.