Realizar backup a MySql desde PHP

Voy a explicar como realizar un backup o copia de seguridad de tu base de datos MySql desde PHP.

//servidor MySql
$C_SERVER='tu_servidor';
//base de datos
$C_BASE_DATOS='tu_base_de_datos';
//usuario y contraseña de la base de datos mysql
$C_USUARIO='tu_usuario';
$C_CONTRASENA='tu_contraseña';
//ruta archivo de salida 
//(el nombre lo componemos con Y_m_d_H_i_s para que sea diferente en cada backup)
$C_RUTA_ARCHIVO = '/ruta_hasta/backups/backup_'.date("Y_m_d_H_i_s").'.sql';
//si vamos a comprimirlo
$C_COMPRIMIR_MYSQL='true';


//comando
$command = "mysqldump --opt -h ".$C_SERVER." ".$C_BASE_DATOS." -u ".$C_USUARIO." -p".$C_CONTRASENA.
     " -r \"".$C_RUTA_ARCHIVO."\" 2>&1"; 
 
//ejecutamos
system($command);

//comprimimos
if ($C_COMPRIMIR_MYSQL == 'true') {
 system('bzip2 "'.$C_RUTA_ARCHIVO.'"');
}


*Supongo que el tutorial es aplicable a cualquier tipo de base de datos siempre y cuando tenga una consola y comandos correspondientes, sería cuestión de adaptar el código.

Mantenimiento MySql en PHP aplicable a otras bases de datos

Bueno, una manera bastante sencilla de realizar un mantenimiento de una base de datos MySql básico sería algo así :

* Conocer como crear el conector $link.
Te dejo el tutorial por si te interesa: Tutorial Conexión a MySql desde PHP

//conectamos
mysql_conecta($link);
//listamos tablas
$tablas=mysql_query("SHOW TABLES FROM box",$link);
//recorremos todas las tablas
while($ft=mysql_fetch_array($tablas)){
//optimizamos las tablas
mysql_query("OPTIMIZE TABLE ".$ft[0],$link);
//otras tareas ...
}

Conexión a mysql desde PHP

Bueno, voy a poner algo bastante básico a la hora de interactuar con una base de datos desde php. Lo más común es utilizar MySql junto con PHP.
Para realizar dicha unión es necesario crear una conexión entre PHP y MySql.

A continuación pongo un procedimiento al que enviamos una variable que servirá de intermediaria entre PHP y MySql.

//PARA CONECTAR A LA BASE DE DATOS
function mysql_conecta(&$link){
  //datos de conexión
  //servidor(si es local "localhost")     
  $mysql_server='tu_servidor';
  //el usuario
  $mysql_login='tu_usuario';
  //la contraseña
  $mysql_pass='tu_contraseña';
  //el nombre de la base de datos
  $mysql_db='tu_db';    

  //conectamos
  if($link=@mysql_connect($mysql_server, $mysql_login, $mysql_pass)){
      //seleccionamos la base de datos
      @mysql_select_db($mysql_db, $link);
  }else{
      print "
El servidor se encuentra ocupado, disculpen las molestias";
      exit();
 }
}

Una vez que tenemos el «puente» ya podemos ejecutar consultas mediante las funciones que PHP incorpora.
Las funciones más utilizadas son :
mysql_query, sirve para enviar sentencias sql y almacenar los resultados de dichas sentencias.
mysql_fetch_array, sirve para convertir el objeto devuelto por mysql_query en un array en la que las claves son los nombres de los campos.
Existen muchas otras también muy útiles. Ver resto de funciones php-mysql.

Voy a poner un ejemplo de pedir un listado de nombres y apellidos de una base de datos:

//realizamos la conexión
conecta($link);
//pedimos los datos mediante mysql_query enviando una consulta y el conector
$respuesta=mysql_query("select nombre, apellido from tabla_nombres", $link);
//recorremos los datos convirtiéndolos en un array por campos
while($fila=mysql_fetch_array($respuesta)){
  //mostramos
  echo "
Nombre: ".$fila["nombre"]."  Apellido: ".$fila["apellido"];
}

Noise el hijo del camino

Bueno, me han sugerido varias personas que hablase de eso que llamo Noise.

Y la verdad es que hay poco que contar 😀

Noise es simplemente una estructura jerárquica de código que ha ido evolucionado junto con mi manera/necesidad a la hora de programar.

Como cada vez voy creando aplicaciones más complejas he tenido que tomar decisiones «organizativas».

Noise se centra básicamente en la separación de ejecución y diseño sin olvidar el rendimiento y la optimización de los mismos.
No me baso en ningún modelo ni en nada por el estilo a la hora de jerarquizar y organizar. La experiencia propia es la única voz que me dictamina como estructurar las diferentes capas que componen la «herramienta de trabajo».

Como Noise nace a partir de mi propia experiencia, la comodidad es la razón más destacable de su existencia.

Respecto al nombre tiene un significado oculto. La palabra noise significa ruido en inglés, que es lo que poco a poco voy consiguiendo hacer y tiene una similitud con la palabra nose, del inglés nariz, que además de ser un rasgo representativo en mi, me sirve para respirar :X

Respecto a las intenciones decir que de momento no tengo intención de adaptarlo para todos los públicos.
Más que nada porque ya existen mil y un frameworks que seguro que en muchos aspectos me pegan un buen repaso y también porque no tengo tiempo para hacerlo.
Para concluir, Noise dista mucho de quedarse en lo que es ahora así que tampoco tendría sentido sentido hacer el trabajo en balde ya que podría remodelarlo de arriba abajo.

Pos eso …