Partage
  • Partager sur Facebook
  • Partager sur Twitter

Script php archivage automatique

script php archivage ftp automatique

    24 janvier 2017 à 8:38:09

    Bonjour, 

    J'aimerai avoir de l'aide car je suis bloquer sur la création d'un script php qui permet de sauvegarder tout les fichier d'un ftp et de les compresser sous une archivage ayant le nom du site et la date de sauvegarde et au bout de 10 sauvegarde du même site que sa supprime automatiquement la plus vielle je sélectionne les jour de sauvegarde dans mon if avec la variable date et le script et exécuter chaque jour avec cron pour le moment j arrive a récupérer tout les fichier des différent ftp mais pas a les archiver par site et par date puis faire le système pour que la sauvegarde la plus ancienne ce supprime au bout de 10 merci de votre aide.

    voici le code en question:

    <?php
    
    $date=date('j');
    echo $date;
    			//execute le programme le 1er et le 15 du mois
    			// la variable $date recupere le jour il suffit apres de entrer les jour de sauvegarde dans le if si on veut rjouter tout les 4 il faut rajouter 
    			//   || $date=7
    			// apres le 15
    if($date==1 || $date==15 || $date==24  )
    {
    
    
    	try{
    		$dbh = new PDO('mysql:host=localhost;dbname=antho_base', '', '');
    
    	}
    	catch(PDOException $e) {
    		var_dump($e->getMessage());
    		die();
    	}
    	//recuperer l user
    
    	$test = "SELECT * From test ";
    	$res = $dbh->query($test);
    	$put = $res->fetchAll();
    
    	$UserCP = array();
    	foreach ($put as $key ) {
    		$UserCP[] = $key['UserCP'];
    	}
    
    	$NomSite = array();
    	foreach ($put as $key ) {
    		$NomSite[] = $key['NomSite'];
    	}
    
    
    
    
    	$mdpCP = array();
    	foreach ($put as $key ) {
    		$mdpCP[] = $key['PassCP'];
    	}
    
    
    
    	$HostCP = array();
    	foreach ($put as $key ) {
    		$HostCP[] = $key['HOST'];
    	}
    
    
    
    	//recuperer nom site
    
    
    foreach ($NomSite as $Nom) {
    	echo $Nom;
    	//boucle avec les user pour les rentrer
    	foreach ($HostCP as $Host) {
    	
    
    		foreach ($mdpCP as $mdp) {
    			
    			foreach ($UserCP as $User) {
    				
    		//boucle qui fait en sorte de ne pas supprimer le fichier local et de bien en garder 10 puis reecrire le premier 
    
    		//		for ($i = 1; $i <= 10;) 
    		//		{
    
    				//		$i = $mysqli->query("SELECT i From Table;");
    
    				//connexion ftp
    				$ftp=ftp_connect($Host, "21") or die("Could not connect to".$Host);
    				$conn_id=ftp_login($ftp, $User, $mdp);
    
    				$local_file = $Host.$date.'.php';
    				$server_file = '/public_html/index.php';
    
    
    				ftp_pasv($ftp, TRUE);
    
    				mkdir($Nom);
    
    				function ftp_sync ($dir) { 
    
    					
    					global $ftp;
    					global $Nom;
                         
    					if ($dir != ".") {
    						if (ftp_chdir($ftp, $dir) == FALSE) {
    							echo ("Change Dir Failed: $dir<BR>\r\n");
    							return;
    						}
    						if (!(is_dir($dir)))
    							mkdir($dir);
    						chdir ($dir);
    					}
    
    					$contents = ftp_nlist($ftp, ".");
    					foreach ($contents as $file) {
    
    						if ($file == '.' || $file == '..')
    							continue;
    
    						if (@ftp_chdir($ftp, $file)) {
    							ftp_chdir ($ftp, "..");
    							ftp_sync ($file);
    						}
    						else
    							ftp_get($ftp,$file, $file, FTP_BINARY);
    					}
    
    					ftp_chdir ($ftp, "..");
    					chdir ("..");
    				}
    
    				ftp_sync ("."); 
    				//ziper les fichier 
    				
    
    
    
    
    				// fin connection ftp
    				ftp_close($ftp);
    				
    				
    				?>
    				<?php
    			}
    		}
    				//}
    	}
    }
    }
    ?>
    • Partager sur Facebook
    • Partager sur Twitter
      24 janvier 2017 à 14:42:53

      Je n'ai pas trop la motivation de lire tout ton code et d'analyser chaque parties jusqu'à voir ce qui ne fonctionne pas mais je peux te donner déjà quelques retours sur ce que je vois au survol :

      if($date==1|| $date==15|| $date==24)

      Tu peux remplacer cela par une tache cron qui exécutera ton fichier les jours voulus, ça t'évitera de lancer le fichier tout le temps.

      Donc le conseil que j'ai à te donner c'est de séparer la compression de la suppression pour plus de clarté. Tu devrais organiser ton projet ainsi :

      • 1 : Je développe l'ajout de fichier (dans une fonction)
      • 2 : Je test ce que j'ai fait
      • 3 : Si ça ne fonctionne pas, je cherche à résoudre le problème, si je n'y arrive vraiment pas, Openclassrom et après solution, retour à l'étape 1
      • 4 : Je développe la fonctionnalité de compression des fichiers (dans une autre fonction)
      • 5 : Je test ce que j'ai fait
      • 6 : Si ça ne fonctionne pas, je cherche à résoudre le problème, si je n'y arrive vraiment pas, Openclassrom et après solution, retour à l'étape 4
      • 7 : Je développe ma fonction de suppression des fichiers
      • 8 : Je test ce que j'ai fait
      • 9 : Si ça ne fonctionne pas, je cherche à résoudre le problème, si je n'y arrive vraiment pas, Openclassrom et après solution, retour à l'étape 7
      • 10 : je me en place ma tâche cron qui exécutera ma fonction

      En général procéder par petites étapes permet de réaliser son code de manière plus claire, plus structurée, plus facile à maintenir et enfin tu n'as pas de gros pavés à poster sur OC sans savoir quel est le problème exact (ce qui à le don de décourager 99% des gens).

      Voilà, bon courage et au boulot ;) 

      • Partager sur Facebook
      • Partager sur Twitter

      Script php archivage automatique

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown