begin process at 2012 05 28 09:04:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Compresser un dossier avec ces sous dossiers


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Compresser un dossier avec ces sous dossiers

mercredi 10 août 2005 à 12:54:26 | Compresser un dossier avec ces sous dossiers

Fran6web


Bonjour,
j'ai trouvé sur le site un script vraiment pas mal permettant de faire un backup de certains dossiers du serveur dans un fichier ZIP ( http://www.phpcs.com/codes/SCRIPT-DE-SAUVEGARDE-AUTOMATIQUE-DES-FICHIERS-RECENEMENT-POSES-SUR-VOTRE-SERVEUR/32805.aspx ). Mais arrivé au derniers dossier, il me marque une première fois cette erreur:
Fatal error: Allowed memory size of 12582912 bytes exhausted (tried to allocate 4352052 bytes) in /web/htdocs/www.mm2x.com/home/mmfc/pclzip.lib.php on line 2427

et quand je rafraichi la page j'ai cette erreur:
Fatal error: Allowed memory size of 12582912 bytes exhausted (tried to allocate 23148438 bytes) in /web/htdocs/www.mm2x.com/home/mmfc/sauvegarde_fichiers.php on line 69

Je vous donne le code de la page sauvegarde.php car je l'ai modifié sachant que mes dossiers ne sont pas les mêmes:
<?

/*
This script is made to synchronise a test server with a production server.
It takes all the file newly uploaded on a server since last execution and servs them in a zip file.
The zip file contains the tree structure of the file. So you just need to unzip the file on your test server
Please think to correctly chmod your $archive_name path
*/
// Name of your archive file :
$archive_name=mktime().'.rar';

// path to archive : (relative path is better but absolute is also possible)
$tab_path_to_arch=array(
                        '../mmfc/');


// <Read the date of last archive session>
$saved_file = fopen('sauvegarde.cf','r');
$LIMIT_DATE=fread($saved_file,filesize ('sauvegarde.cf'));
fclose($saved_file);
// </Read the date of last archive session>

// Defines is better than global or parameter in function
define('_LIMIT_DATE',$LIMIT_DATE);

// Set the next save date until now.
// IMPORTANT TO DO THIS BEFORE STARTING SAVING
$LIMIT_DATE_FOR_NEXT_TIME=mktime()-3600; // security of one hour for the fun

// user information
echo 'Save new files since :'.date('d/m/y - h:i',$LIMIT_DATE).'<br />';
echo 'The archive file will be created as : '.$archive_name.'<br />';

// <Search the file to archive>
$tab_files_to_arch=array('');
foreach($tab_path_to_arch as $lcl_root){
    list_dir($lcl_root,$tab_files_to_arch);
    echo '<br />..........................<br />';
}
// </Search the file to archive>

// <make the archive file>
if (sizeof($tab_files_to_arch)==1) die ('Nothing new today. Exiting');
require('pclzip.lib.php');
$archive = new PclZip($archive_name) or die ("FAUTE initialisation de l'archive");
$archive -> create($tab_files_to_arch) or die ("FAUTE creation archive");
// </make the archive file>

// <save the date for next archive session>
$save_file = fopen('sauvegarde.cf','w');
fwrite($save_file,$LIMIT_DATE_FOR_NEXT_TIME);
fclose($save_file);
// </save the date for next archive session>

// <finishing the script>
$size=round(filesize($archive_name)/1024,2);
echo '
<br />
<a href="'.$archive_name.'">Download the archive file ('.$size.'Ko)</a>';
// </finishing the script>

// tests the date of a file and adds it to the table if needed
// path : path and name of the file
// file : file name (just for display)
// tableau : address param containing a list of files to compute
// returns none : the table will contain all infos
function test_date($path,$file,&$tableau){
//    echo 'file to test : '.$file;
    $theone=file($path);
    if (filemtime($path) > _LIMIT_DATE) {
        $tableau[]=$path;
        echo $file.' ';
    }
    return;
}

// Lists the file of a path (recursive method)
// path : path to scann
// tableau : address param containing a list of files to compute
// returns none : the table will contain all infos
function list_dir ($path,&$tableau){
    if ($dir = @opendir($path))    {
        echo '<b>'.$path.'</b><br />';
        while($file = readdir($dir)) {
            if ($file !="." && $file != "..") {
                $path_file=str_replace($_SERVER['DOCUMENT_ROOT'],"",$path);
                $path_file=str_replace("/","\\",$path_file);
                if (is_dir($path."/".$file)) { list_dir ($path.'/'.$file, $tableau);}
                else { test_date($path.'/'.$file,$file,$tableau); }
            }
        }
        closedir($dir);
    } else {
        echo $path.' isn\'t dir;';
    }
    return;
}
?>

J'ai regardé les différents façon de pouvoir corriger ce problème comme par exemple:
<?
//valeur initiale
echo "get_cfg_var(memory_limit) = ".@get_cfg_var('memory_limit')."<br />";
echo "ini_get(memory_limit) = ".@ini_get('memory_limit')."<br />";

//modification
@ini_set("memory_limit",'18M');
// on tente d'allouer 18 M

//modification prise en compte ?
echo "get_cfg_var(memory_limit) = ".@get_cfg_var('memory_limit')."<br />";
echo "ini_get(memory_limit) = ".@ini_get('memory_limit')."<br />";
// on verifie si l'allocation de 18 M a pu etre possible sur le serveur
?>

Mais la fonction ini_set() semble être désactivé.

Donc si le zip me prend trop de ressource, je me suis dis qu'il valait mieux y mettre en gz grâce à la ZLIB mais je ne sais pas du tout comment ça fonctionne. Merci de m'aider

mercredi 10 août 2005 à 14:05:45 | Re : Compresser un dossier avec ces sous dossiers

GRenard

Le mieux c'est de contacter l'auteur de la source voir ce qu'il peut faire parce que un problème de mémoire tu peux pas trouver ca direct c'est à quelle ligne... Le script PHP va s'arrêter à la ligne où il est rendu lorsqu'il n'y a plus de mémoire...
Tu ne pourras certainement pas allouer plus que 8M par défaut, disons que c'est toujours bloqué...


Cherchez, Essayez et Testez avant de Poser une question !
[ Lien ]
mercredi 10 août 2005 à 14:50:02 | Re : Compresser un dossier avec ces sous dossiers

Anthomicro

Salut,

tu ne pourras pas vraiment faire de sauvegarde de gros dossiers ou de fichiers qui dépassent la taille allouée par PHP, tu peux par contre passer par FTP et faire des sauvegardes semi-automatiques, lorsque tu cliques sur un lien de ton site tu mets un serveur FTP chez toi qui rapatrie les fichiers sur le FTP distant, par exemple.


    mercredi 10 août 2005 à 15:58:21 | Re : Compresser un dossier avec ces sous dossiers

    Fran6web


    Le soucis c'est que j'ai pas accée au FTP! J'ai seulement un script php pour mettre des fichiers.
    Et puis l'auteur de la librairie est un anglais donc...
    mercredi 10 août 2005 à 16:32:04 | Re : Compresser un dossier avec ces sous dossiers

    Anthomicro

    Donc tu bois le bouillon
    mercredi 10 août 2005 à 16:40:44 | Re : Compresser un dossier avec ces sous dossiers

    Fran6web

    Sinon si je bois ce "bouillon" pas très bon lol!
    Il n'y aurai pas un moyen que le script évite le dossier qui me pose ce problème pour que le reste s'enregistre normalement?

    mercredi 10 août 2005 à 16:49:13 | Re : Compresser un dossier avec ces sous dossiers

    Anthomicro

    Si si tu scannes la taille totale des fichiers du dossier, avec une fonction récursive ça peut le faire :-)
    mercredi 10 août 2005 à 16:54:56 | Re : Compresser un dossier avec ces sous dossiers

    Fran6web

    Mais malheureusement je ne sais pas ou y placer!
    mercredi 10 août 2005 à 16:58:58 | Re : Compresser un dossier avec ces sous dossiers

    Anthomicro

    ? ça veut dire quoi ça ?
    mercredi 10 août 2005 à 17:07:00 | Re : Compresser un dossier avec ces sous dossiers

    Fran6web

    En faite je ne sais pas ou placer le code pour éviter le dossier qui me pose problème!

    1 2

    Cette discussion est classée dans : file, to, path, archive, limit


    Répondre à ce message

    Sujets en rapport avec ce message

    pb ajout photo [ par joebuz ] qu'est-ce que ca veut dire :Warning: move_uploaded_file(photos/membres/59.jpg): failed to open stream: No such file or directory in /home.2/waterpola/ Récuperer le poid d'un repertoire [ par setasan9 ] Bonsoir,J'ai un petit soucis. Je doit récuperer la taille d'un répertoire pour limiter l'upload de fichier.Cependant, que ce soit avec ma fonction ou Lister contenu d'un repertoire avec tailles fichiers et dossiers [ par harmonyk ] Bonjour à tous ! J'ai codé il n'y a pas très longtemps ce script me permettant d'afficher le contenu d'un répertoire (ici $path) en indiquant pour cha problème avec substr !! [ par fredo35m ] pourquoi lorsque je mets ça, ça ne marche pas ??je souhaite juse récupérer le nom du fichier sans extension ni rien (=fichier)il me semble que c'est l creer un compteur [ par mike501 ] bonjour, je vien de trouver une galerie a mon gout mais le souci c est que les image ce mette toute sur la meme page estce que quelq un pourrai m aide creer un compteur sur gallerie [ par mike501 ] bonjour, je vien de trouver une galerie a mon gout mais le souci c est que les image ce mette toute sur la meme page estce que quelq un pourrai m aide creer un compteur [ par mike501 ] bonjour, je vien de trouver une galerie a mon gout mais le souci c est que les image ce mette toute sur la meme page estce que quelq un pourrai m aide Pb chemin de longueur superieure à 255 caractères [ par kohntark ] Salut, Je souhaite lister un répertoire (ou une unité) afin d'appliquer un traitement à certains types de fichiers. Le script s'execute en CLI sous w Problème de démarrage de MySQL [ par yascasa ] Salut à vous tous.Mon broblème est le suivant:J'ai instalé la version EasyPHP3.0.Jusqu'ici tout marche bien.Mais quand je veux démarrer MySQL une erre modifier un code sur une gallerie [ par mike501 ] bonjour, je vien de trouver une galerie a mon gout mais le souci c est que les image ce mette toute sur la meme page estce que quelq un pourrai m aide


    Nos sponsors


    Sondage...

    CalendriCode

    Mai 2012
    LMMJVSD
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   

    Consulter la suite du CalendriCode

    A découvrir



     
    Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
    CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
    CodeS-SourceS.com© est une marque déposée tous droits réservés

    Google Coop CodeS-SourceS Google Coop CodeS-SourceS
    Temps d'éxécution de la page : 0,842 sec (4)

    Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales