Bonjour à tous,
Est-il possible de copier plusieurs située sur un serveur local vers une serveur web, sans utiliser de dump, mais en PHP, afin de réaliser une commande automatisée.
Merci.
Version imprimable
Bonjour à tous,
Est-il possible de copier plusieurs située sur un serveur local vers une serveur web, sans utiliser de dump, mais en PHP, afin de réaliser une commande automatisée.
Merci.
Si tu arrive a te connecter a ta base de donnée de ton serveur web a distance (en dehors du meme nom de domaine) alors c'est faisable sinon une solution serais de passer par du transfert de fichier (FTP). Ca se fait en 2 temps, d'abords tu fait un backup de ta table en local ensuite tu fait un restore sur le serveur WEB.
Il y'a au moins 2 facon de faire :
- Faire une Query de backup de la BDD.
- Executer mysqldump en utilsant la fonction system().
- Faire une Query de backup de la BDD.
Un exemple de code en utilisant une query SELECT INTO OUTFILE pour créer la table backup :
Transfert du fichier sauvegardé vers le serveur WEB en FTPCode:
1
2
3
4
5
6 <?php $tableName = 'matable'; $backupFile = 'matable.sql'; $query = "SELECT * INTO OUTFILE '$backupFile' FROM $tableName"; $result = mysql_query($query); ?>
Pour récupérer la table sur le serveur WEB tu aura besoin de faire une query LOAD DATA INFILE comme ceci :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php $file = 'matable.sql'; $remote_file ='matable.sql'; $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) { echo "Tranfert réussi fichier $file\n"; } else { echo "Probleme transfert fichier $file\n"; } ftp_close($conn_id); ?>
- Executer mysqldump en utilsant la fonction system().Code:
1
2
3
4
5
6 <?php $tableName = 'matable'; $backupFile = 'matable.sql'; $query = "LOAD DATA INFILE '$backupFile' INTO TABLE $tableName"; $result = mysql_query($query); ?>
La fonction system() est utilisé pour exécuter un programme externe (si le serveur WEB le permet). On peut appeler mysqldump a partir du code PHP.
Pour sauvegarder toute la BDD
Ou bien quelques tables spécifiques:Code:
1
2
3
4
5 <?php $backupFile = $nomBDD . date("Y-m-d-H-i-s") . '.gz'; $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $nomBDD | gzip > $backupFile"; system($command); ?>
Code:
1
2
3
4
5
6 <?php $backupFile = $nomBDD . date("Y-m-d-H-i-s") . '.gz'; $command = "mysqldump -h $dbhost -u $dbuser -p $dbpass $nomBDD $table1,$table2,$table3 | gzip > $backupFile"; system($command); ?>
Pourquoi ne pas regarder du côté de la réplication de base myql entre deux serveurs ?
Un serveur est local tandis que le second est mutualisé, ce qui ne facilite pas les choses pour des raisons de droits
Est-il possible avec PHP de faire quelque chose comme
Code:CREATE TABLE base_1.table SELECT * FROM base_2.table
Oui mais à condition que les deux bases soient sur le même serveur.