Apaño para MySQL

Como de vez en cuando sigue saliendo el error de MySQL (sobre todo cuando más tráfico hay) y no consigo averiguar la causa, he hecho una chapucilla, a ver que pasa ahora…
function mysql_connect_db() {
  global $mysql_user, $mysql_pass, $mysql_host, $mysql_data;
  $link = false;
  $i = 0;
  while (($i<3) and ($link===false)) {
    if ($i>0) sleep(2);
    $link = @mysql_connect($mysql_host, $mysql_user, $mysql_pass);
    $i++;
  }
  if ($link===false) die("MySQL connect: ".mysql_error());
  mysql_select_db($mysql_data, $link) or die("MySQL select: ".mysql_error());
  return $link;
}

Básicamente lo que dice el código es: “si no puedes conectar, espérate un rato y vuelve a intentarlo”.
Si a alguien se le ocurre algo mejor, que me lo diga.

Anuncios

14 pensamientos en “Apaño para MySQL

  1. Creo que está bien como lo has puesto. Aunque tambíen podrías hacer que salga una página que ponga ” Este sitio está saturado temporalmente, intentalo de nuevo más tarde”

    Como tamíen podrías añadir un máximo de usuarios en la web y que cuando esté ese limite y un usuario desee entrar, se le muestre la página mencionada antes.

    Es solo una sugerencia, aunque si la añades,procura establecer un nivel alto de usuarios.

    Saludos

  2. ombre, esta bien como medida de emergencia y tal, pero amos, q es una chapuza total, xD. El sleep(2) supongo q es para q espere un rato, pero ese 2 q son? milisecs, seg…

  3. Xenon19, podría ser una solución, pero queda muy feo eso de “la web esta saturada” y el servidor (de momento) tiene capacidad para servir a más usuarios todavía ya que no se llega al límite ni de apache ni de mysql ni de CPU, pero no se porqué mysql se pone en huelga a veces.

    Xplod, son segundos, para milisegundos la funcion es usleep();

  4. Hola, al parecer MySQL puede llegar a no crear (o incluso a no leer) el fichero de socket en la ruta adecuada. Teóricamente eso se solucionaría editando el fichero my.cnf y añadiendo, por ejemplo en este caso concreto:

    socket = /var/run/mysqld/mysqld.sock

    dentro de los apartados [mysqld] y [client] del fichero my.cnf.

    después de:
    port= numero_de_puerto

    No sé si esto te ayudará en algo, porque viendo tu trabajo y tu demostrada solvencia con PHP/MySQL, y lo simple de la solución, estoy seguro de que ya la habrás tenido en cuenta. Pero por si acaso la has obviado, ahí queda mi pequeña contribución que, de paso, también me sirve como excusa para enviarte un saludo y felicitarte por la web.

  5. Luis, toda la configuración es correcta. El problema es que a veces (sólo a veces) sale el error mencionado. Coincide con las horas de más tráfico pero ni de cerca se llega al número máximo de conexiones permitidas. Si fuese un problema de configuración, fallaría siempre. De todos modos gracias 😉

  6. mi pregunta es que yo anoto los cumpleaños de los actores y a veces se me pasa un dia y sin querer me olvido de apuntar los cumpleaños de esos actores de ese dia como puedo recobrar ese dia con los cumpleaños de los artistas y tambien quisiera saber los cumpleaños de los actores que han fallecido por ejemplo gary cooper, dean martin, etzetera.
    Hay alguna pagina en Hispashare que los tenga con la foto ?
    Agradeceria si se pudiara hacer algo al respecto, por ejemplo que podamos buscar en dias pasados los cumpleaños con sus debidas fotos de los actores.
    muchas gracias y hasta la proxima.
    Ps. en wikipedia puedo, pero no quiero alterar la coleccion con diferentes fotos de diferente tamaño y color.

  7. un tema aparte:
    una cosa ke vi o me parecio raro, cuando cargo las imagenes extras ke vienen en una peli, parece ser ke las carga 2 veces, al menos eso vi en IE 7.
    me di mas cuenta , cuando tenia abierto el emule y el pc como cosa normal me iva mas lento y al abrir algunas delas imagenes de alguna peli , vi ke despues de cargarla, la imagen se volvia a cargar, lo note ahi al tener el pc mas lento y era mas visible, lo porve sin emule abierto y no se notaba, pero las cargaba 2 veces.
    saludos

  8. Possio, la información sobre los cumpleaños y las fotos la saco de imdb, ahi tienen una base de datos gigantesca con todos los cumpleaños, fallecimientos y bodas de los actores.
    Puedes verlo aqui:
    http://www.imdb.com/OnThisDay?day=7&month=June

    Atolon, es cierto que a veces las carga dos veces. Eso es porque las imágenes las tengo alojadas en servidores externos (para ahorrarme el ancho de banda). Sin embargo sucede que, a veces, los servidores gratuitos fallan, si tu navegador detecta un error o algo raro, lo que hace la página es cargar la copia que hay en mi servidor y marca la imagen para ser comprobada y subirla de nuevo en caso de ser necesario. Si eso te ocurre siempre, avísame e investigaré porque no es normal.

  9. Hola, primero un saludo y me encanta tu web mi mas sincera enhorabuena.

    Respecto al problema que puedes tener con la base de datos, aunque no soy experto en mysql ni php, soy programador Web, puede que no tenga que ver con el número de conexiones sino con lo que hacen las conexiones, me explico, puede que ciertas funciones que utilizas esten bloqueando por algún motivo alguna tabla de la BD (Ejemplo: un update, un insert, etc) y cuando intentas acceder a ellas te de este problema. Ya digo que no soy experto, me muevo mejor con Sql Server :):):)
    Segundo, una buena práctica de programación es liberar cuanto antes todos los recursos asociados a una conexión a BD, aunque se liberen solos al fnalizar el script, sino hace falta más no hay que tenerla abierta.

    Saludos y espero que todo se mejore, por cierto a mi nunca me apareció ese error :D:D:D

  10. esther.hola tengo emule pero no me puedo conectar a hispashare como puedo arreglar ese problema . primero estaba batallando porque tenia id baja ya arregle ese problema pero ahora no puedo conectarme con hispashare no se si por estar arreglando el otro problema lo borre o ise algo que le afectara nesesito ayuda aparte no se mucho de estas cosas grasias…..

  11. What’s Going down i am new to this, I stumbled upon this I have discovered It positively helpful and it has aided me out loads. I am hoping to give a contribution & help other users like its aided me. Good job.

  12. Heya excellent website! Does running a blog such as this take a lot of
    work? I’ve no knowledge of coding but I was hoping to start my own blog in the near future. Anyway, if you have any recommendations or techniques for new blog owners please share. I know this is off topic however I just had to ask. Thanks a lot!

  13. I’m really enjoying the design and layout of your site. It’s a very easy
    on the eyes which makes it much more pleasant for me to come here and visit
    more often. Did you hire out a designer to create your theme?
    Exceptional work!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s