Synchronisation entre serveur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Synchronisation entre serveur

Re: Synchronisation entre serveur

par guigui69 » 05 déc. 2013, 15:43

Bonjour à tous,

j'avance dans mon script.

La je bloque sur mon script.

Si je lance mon script php depuis la page web cela fonctionne.

par contre depuis putty:

root@GA-DEBIAN:~# /usr/bin/php -e /var/www/planetvo/import-server.php

Code : Tout sélectionner

<br/>Connexion au serveur pub, pour l'utilisateur groe est okPHP Warning: ftp_get(import/stockvo.csv): failed to open stream: No such file or directory in /var/www/planetvo/import-server.php on line 39 PHP Warning: ftp_get(): Error opening import/stockvo.csv in /var/www/planetvo/import-server.php on line 39 <br/>Le chargement FTP a échoué!PHP Warning: ftp_get(import/photos.txt.zip): failed to open stream: No such file or directory in /var/www/planetvo/import-server.php on line 46 PHP Warning: ftp_get(): Error opening import/photos.txt.zip in /var/www/planetvo/import-server.php on line 46 <br/>Le chargement FTP a échoué!<br/> Decompression failedPHP Warning: fopen(import/stockvo.csv): failed to open stream: No such file or directory in /var/www/planetvo/import-server.php on line 71 PHP Warning: filesize(): stat failed for import/stockvo.csv in /var/www/planetvo/import-server.php on line 73 PHP Warning: fgetcsv() expects parameter 1 to be resource, boolean given in /var/www/planetvo/import-server.php on line 74 PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/planetvo/import-server.php on line 78 PHP Notice: Undefined variable: result in /var/www/planetvo/import-server.php on line 80 PHP Warning: fopen(import/photos.txt): failed to open stream: No such file or directory in /var/www/planetvo/import-server.php on line 71 PHP Warning: filesize(): stat failed for import/photos.txt in /var/www/planetvo/import-server.php on line 73 PHP Warning: fgetcsv() expects parameter 1 to be resource, boolean given in /var/www/planetvo/import-server.php on line 74 PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/planetvo/import-server.php on line 78 PHP Notice: Undefined variable: result in /var/www/planetvo/import-server.php on line 80 PHP Notice: Use of undefined constant display_errors - assumed 'display_errors' in /var/www/planetvo/import-server.php on line 155 sudo -u www-data /usr/bin/mysqldump --host=127.0.0.1 --user=root --password=pppp-C -Q -e --default-character-set=utf8 planetvo > planetvo.sql
Ou est mon erreur

guigui69

Re: Synchronisation entre serveur

par @rthur » 21 nov. 2013, 20:47

Modération :
Ce sujet dérive vers la polémique stérile ("troll").
Faute de revenir dans le sujet avec des interventions réellement constructives,
ce sujet pourra être verrouillé, voire supprimé, sans autre préavis.

Re: Synchronisation entre serveur

par Nagol » 21 nov. 2013, 13:57


Systèmes qui demandent des compétences d'administration. Dans ce cas là, seule une pseudo-réplication est nécessaire, je ne pense pas que guigui69 souhaite se farcir l'installation d'une réplication master-slave.
O o, c'est à la portée de n'importe qui, comme la plupart des tâches d'administration système d'ailleurs.
No comment...
Pourquoi donc "no comment" l'administration système c'est loin d'être un truc compliqué, c'est pas comme le développement qui lui requiert un apprentissage théorique conséquent, l'administration ça reste du bidouillage et du trial and error, donc à la portée de n'importe qui.

Re: Synchronisation entre serveur

par Sékiltoyai » 21 nov. 2013, 11:11

Les SGBD ont des systèmes de master/slave qui font ça automatiquement, pas besoin de cron ou de coder normalement, juste un peu de doc devrait faire l'affaire.
Systèmes qui demandent des compétences d'administration. Dans ce cas là, seule une pseudo-réplication est nécessaire, je ne pense pas que guigui69 souhaite se farcir l'installation d'une réplication master-slave.
O o, c'est à la portée de n'importe qui, comme la plupart des tâches d'administration système d'ailleurs.
No comment...

Re: Synchronisation entre serveur

par Nagol » 21 nov. 2013, 10:56

Les SGBD ont des systèmes de master/slave qui font ça automatiquement, pas besoin de cron ou de coder normalement, juste un peu de doc devrait faire l'affaire.
Systèmes qui demandent des compétences d'administration. Dans ce cas là, seule une pseudo-réplication est nécessaire, je ne pense pas que guigui69 souhaite se farcir l'installation d'une réplication master-slave.
O o, c'est à la portée de n'importe qui, comme la plupart des tâches d'administration système d'ailleurs.

Re: Synchronisation entre serveur

par guigui69 » 19 nov. 2013, 19:49

J'y suis arrivé mais je suis obligé de passer par un fichier bat.

Maintenant je cherche à réaliser la tache planifié sous windows (sous linux c'est deja fait) cat si je lance le script il me retourne ceci:

Fatal error: Call to undefined function mysql_connect() in C:\Program Files\UwAm
p\www\ecran\import-clientv2.php on line 30

Je ne vois pas comment faire


guigui69

Re: Synchronisation entre serveur

par guigui69 » 19 nov. 2013, 18:38

Bonsoir à tous,

J'ai avancé sur mon script du coté "client".

Tout le script fonctionne sauf la restauration de la base depuis le script php.

Par contre si je directement cela dans la console Windows elle s’intègre sans problème
"C:\Program Files\UwAmp\bin\database\mysql-5.5.9\bin\mysql.exe" --host=127.0.0.1 --user=root --password=++++++++planetvo < "C:\Program Files\UwAmp\www\ecran\planetvo.sql"
J'ai essayé la commande system/exec shell_exec

cette ligne est la copie de ma ligne du script php

ou est mon erreur.?

guigui69

Re: Synchronisation entre serveur

par Sékiltoyai » 19 nov. 2013, 12:42

Re: Synchronisation entre serveur

par guigui69 » 19 nov. 2013, 12:29

Depuis mon poste linux,

l’essai ceci:

root@GA-DEBIAN:/var/www/planetvo# mysql --host=10.11.7.189 --user=root --password=mmmmmm planetvo

Voici le retour: ERROR 1042 (HY000): Can't get hostname for your address

Comment corriger ce problème?

guigui69

Re: Synchronisation entre serveur

par Sékiltoyai » 19 nov. 2013, 09:38

Bonjour,

Je ne comprend rien à la construction de ton script.

Tu peux réaliser l'opération de façon très simple avec un script bash sous linux:

Code : Tout sélectionner

#!/bin/bash datafile=$(mktemp --tmpdir=/tmp/ dataXXXXXX.sql) source_host="localhost" source_user="utilisateur" # Remplacer par le nom d'utilisateur source_pass="mot de passe" # Remplacer par le mot de passe source_base="base de données" # Remplacer par le nom de la base de données destination_host="192.168.1.5" # Remplacer par l'IP de la destination (PC Windows) destination_user="utilisateur" # Remplacer par le nom d'utilisateur destination_pass="mot de passe" # Remplacer par le mot de passe destination_base="base de données" # Remplacer par le nom de la base de données mysqldump --host=${source_host} --user=${source_user} --password=${source_pass} ${source_base} >${datafile} mysql --host=${destination_host} --user=${destination_user} --password=${destination_pass} ${destination_base} <${datafile}
Et tu actives sur ta base de données Windows la possibilité de se connecter depuis l'extérieur.

Cordialement

Re: Synchronisation entre serveur

par guigui69 » 19 nov. 2013, 09:05

Bonjour,

Je pense qu'avec mon script je devrais arriver à trouver mon compte. Par contre je ne sais pas comment realiser le dump de ma base

guigui69

Re: Synchronisation entre serveur

par Sékiltoyai » 18 nov. 2013, 21:43

Les SGBD ont des systèmes de master/slave qui font ça automatiquement, pas besoin de cron ou de coder normalement, juste un peu de doc devrait faire l'affaire.
Systèmes qui demandent des compétences d'administration. Dans ce cas là, seule une pseudo-réplication est nécessaire, je ne pense pas que guigui69 souhaite se farcir l'installation d'une réplication master-slave.

Re: Synchronisation entre serveur

par Nagol » 18 nov. 2013, 20:57

Les SGBD ont des systèmes de master/slave qui font ça automatiquement, pas besoin de cron ou de coder normalement, juste un peu de doc devrait faire l'affaire.

Re: Synchronisation entre serveur

par guigui69 » 18 nov. 2013, 16:08

Bonjour,

c'est sur quoi je suis partit par contre je bloque sur la dernière partie du serveur.
<?php
// Acces mysql server

$server="1****";
$user="****";
$pass="******";
$db="******";
mysql_connect($server,$user,$pass) or die('erreur de connexion0');
mysql_select_db($db) or die ('impossible de se connecter a la base0');
// chargement FICHIER  CONFIG

$sql0="SELECT * FROM `config` LIMIT 1";
$retour0 = mysql_query($sql0) or die('ERREUR SQL ! '.$sql0);
$field = mysql_num_fields($retour0);
$donnees0 = mysql_fetch_array($retour0);
		for ( $i = 0; $i < $field; $i++ ) 
		{
                  
       $_SESSION[mysql_field_name($retour0, $i)] = $donnees0[$i];
        }
		print_r($_SESSION);
		
		
//Connexion au FTP planevo FTP////////////////////////

$conn_id = ftp_connect($_SESSION["adresse_ftp"]);
$login_result = ftp_login($conn_id, $_SESSION["login_ftp"],$_SESSION["mdp_ftp"]);

//VERIFICATION DE LA CONNEXION//////////////////////
if ((!$conn_id) || (!$login_result)) {
        echo "<br/>La connexion FTP a échoué !<br>";
        echo "<br/>Tentative de connexion au serveur ".$_SESSION["adresse_ftp"]." pour l'utilisateur ".$_SESSION["login_ftp"]."";
        exit;
    } else {
        echo "<br/>Connexion au serveur ".$_SESSION["adresse_ftp"].", pour l'utilisateur ".$_SESSION["login_ftp"]." est ok";
    }

//CHARGEMENT  D'UN FICHIER stockvo + verification
$donwload = ftp_get($conn_id, $_SESSION["dossier_import"].$_SESSION["fichier_vo"], $_SESSION["dossier_ftp"].$_SESSION["fichier_vo"], FTP_BINARY); 
if (!$donwload) {
        echo "<br/>Le chargement FTP a échoué!";
    } else {
        echo "<br/>Chargement de ".$_SESSION["fichier_vo"]." vers ".$_SESSION["adresse_ftp"]." en tant que ".$_SESSION["dossier_import"]." ";
    }
//CHARGEMENT  D'UN FICHIER photovo + verification	
$donwload = ftp_get($conn_id, $_SESSION["dossier_import"].$_SESSION["fichier_photo_zip"], $_SESSION["dossier_ftp"].$_SESSION["fichier_photo_zip"], FTP_BINARY); 
if (!$donwload) {
        echo "<br/>Le chargement FTP a échoué!";
    } else {
        echo "<br/>Chargement de ".$_SESSION["fichier_photo_zip"]." vers ".$_SESSION["adresse_ftp"]." en tant que ".$_SESSION["dossier_import"] ."";
    }

	///////		//Decompression ZIP
	
	$zip = new ZipArchive;
if ($zip->open($_SESSION["dossier_import"].$_SESSION["fichier_photo_zip"]) === TRUE) {
    $zip->extractTo($_SESSION["dossier_import"]);
    $zip->close();
    echo '<br/> Decompression ok';
} else {
    echo '<br/> Decompression failed';
}


		
//Fonction PHP

function lire_csv($nom_fichier, $separateur =";"){
    $row = 0;
    $donnee = array();   
    $f = fopen ($nom_fichier,"r");
	//$f = str_replace ( '-', '_',$f) ;
    $taille = filesize($nom_fichier)+1;
    while ($donnee = fgetcsv($f, $taille, $separateur)) {
        $result[$row] =str_replace ( '\'', '_',$donnee);
        $row++;
    }
    fclose ($f);

    return $result;
}

function requete_insert($donnees_csv, $table){
    $insert = array();
    $i = 0;     
    while (list($key, $val) = @each($donnees_csv)){
/*On ajoute une valeur vide ' ' en début pour le champs d'auto-incrémentation  s'il existe, sinon enlever cette valeur*/
        //VALUES ' . implode(',', $values);  
		  if ($i>0){
            $insert[$i] = "INSERT into `".$table."` VALUES ('";
			$insert[$i] .= implode("','", $val);
			$insert[$i] .= "')";
                    
   }$i++;
        }      
    return $insert;
}

//////////////////
//vider la table SQL table 1 liste des VO

	$query0 = "TRUNCATE TABLE `".$_SESSION['table_vo']."`";
	$result = mysql_query($query0) or die('Erreur SQL !'. $query0.'<br />'.mysql_error());
/////////

//////////////////
//vider la table SQL table 2 liste des photos

	$query0 = "TRUNCATE TABLE `".$_SESSION['table_photo']."`";
	$result = mysql_query($query0) or die('Erreur SQL !'. $query0.'<br />'.mysql_error());
/////////////////////////////////////////////


/////////////// IMPORT DES VO //////////////



////////////// integration fichier en la base MYSQL

  $donnees = lire_csv($_SESSION["dossier_import"].$_SESSION["fichier_vo"]);
  $requetes= requete_insert($donnees, $_SESSION['table_vo']);
  foreach($requetes as $requete)
  {
//  echo $requete;
   $result = mysql_query($requete) or die('Erreur SQL !==>'. $requete.'<br />'.mysql_error());
  }
 
///////////////// integration fichier photo


  $donnees = lire_csv($_SESSION["dossier_import"].$_SESSION["fichier_photo"],"	");
  $requetes= requete_insert($donnees, $_SESSION['table_photo']);
  foreach($requetes as $requete)
  {
//  echo $requete;
   $result = mysql_query($requete) or die('Erreur SQL !==>'. $requete.'<br />'.mysql_error());
  }

ftp_close($conn_id);


// error_reporting(E_ALL); // Activer le rapport d'erreurs PHP

$db_charset = "utf8"; /* mettre utf8 ou latin1 */


// system($command);
ini_set(display_errors, 1); 
error_reporting(E_ALL); 
$commande = "mysqldump --host=$server --user=$user --password=$pass -C -Q -e --default-character-set=$db_charset  planetvo  > planetvo.sql ";
echo $commande;
system($commande);



?>
Je n'arrive pas en php à faire un DUMP, alors que si j’exécute la ligne directement dans le serveur (à travers putty) le dump se fait correctement.

Cela doit être un problème de droit mais je ne sais pas comment corriger cela

guigui69

Re: Synchronisation entre serveur

par Sékiltoyai » 08 nov. 2013, 23:32

Bonjour,

C'est en effet la solution que j'aurais suggéré:
* Exécution d'un script cron chargé d'exporter le contenu de base de données...
* ... puis de l'envoyer vers un script sur le poste Windows ...
* ... lequel réimporte la nouvelle base de données.
On peut également limiter les enregistrements à importer en plaçant un timestamp sur les enregistrement de base de données.

C'est de la synchronisation basique mais stable, et qui ne demande pas de compétences particulières dans l'administration d'une base de données.

Cordialement