Pubblico questo piccolo script con la speranza che, con l'aiuto di qualcuno, si possa migliorare e rendere flessibile a tutti sistemi.
Lo script è nato per la necessità di importare database di grandi dimensioni in modo veloce, cosa che con phpMyAdmin non è possibile.
BACKUP DATABASE USANDO PHP E MYSQLDUMP
mysldump è il programma di mysql per il backup di uno o più database. Usato da shell è il sistema migliore e più veloce per backuppare db.
Questo piccolo script php sfrutta proprio questo programma.
Io l'ho provato sia su linux che su win e funziona, con un semplice click e poche righe di codice si può scaricare velocemente in locale il dump del db.
C'è da dire che i server che ho utilizzato sono miei e quindi l'utilizzo delle funzioni per l'esecuzione di programmi esterni non è disabilitata.
Se siete in hosting dovete verificare la posiibilità di utilizzare funzioni per programmi esterni.
Ecco lo script per il dump:
codice:
<?
$db_name="NOME_DATABASE"; // nome database
$user="utente_db"; // nome utente mysql
$psw="password_db"; // password utente mysql
$filename=$db_name."-".date("Y-m-d").".sql"; // nome del file del dump con la data odierna
$percorso_file="/var/tmp/".$filename; // percorso file temporaneo del dump per linux (io uso /var/tmp). Commentare su win
// $percorso_mysql="C:/Programmi/mysql/MySQL Server 4.1/bin"; // percorso mysql: solo per windows (cambiare se necessario). Commentare su linux
// DUMP
// system("\"$percorso_mysql\mysqldump\" --user=$user --password=$psw $db_name > $percorso_file"); // per windows. commentare se su linux
system("mysqldump --user=$user --password=$psw $db_name > $percorso_file"); // per linux. commentare se su win
// SE IL BROWSER E' INTERNET EXPLORER
if(ereg("MSIE ([0-9].[0-9]{1,2})", $_SERVER['HTTP_USER_AGENT'])) {
header("Content-Type: application/octetstream");
header("Content-Disposition: inline; filename=$filename");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: public");
}
else {
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$filename");
header("Expires: 0");
header("Pragma: no-cache");
}
require($percorso_file);
unlink($percorso_file);
?>
IMPORT DATABASE USANDO PHP E MYSQL
myslq è un altro programma di mysql per eseguire alcune operazioni da shell, come ad esempio l'import di db. Vale lo stesso discorso fatto precedentemente per l'hosting.
Ecco lo script per l'import.
codice:
<?php
// connessione a mysql
$host="localhost";
$utente="user";
$passwut="password";
// connessione al db
$link=mysql_connect($host,$utente,$passwut);
if(!$link) die("Impossibile connettersi al database MYSQL. Errore: ".mysql_error());
$file_db="/var/tmp/dumpdb.sql"; // file proveniente dal dump (ometto la parte di upload per semplificare lo script)
$db_name="NOME_DB";
if(file_exists($file_db)){
// cancellazione vecchio db
$query1="DROP DATABASE $db_name";
mysql_query($query1,$link) or die("Impossibile eseguire la query $query1
Errore:".mysql_error());
// creazione nuovo db
$query2="CREATE DATABASE $db_name";
mysql_query($query2,$link) or die("Impossibile eseguire la query $query2
Errore:".mysql_error());
$system_query="mysql --user=".$utente." --password=".$passwut." ".$db_name." < ".$file_db;
// $percorso_mysql="C:/Programmi/mysql/MySQL Server 4.1/bin"; // percorso mysql: solo per windows (cambiare se necessario). Commentare su linux
// DUMP
// system("\"$percorso_mysql\$system_query"); // per windows. commentare se su linux
$sr=system( $system_query ); // per linux. commentare se su win
print "
Database aggiornato! $sr</p>";
print "
".$system_query."</p>";
}
else print "file non presente";
?>