IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Compression de répertoire avec bibliothèque ZIP [Fait] [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut Compression de répertoire avec bibliothèque ZIP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // Adding files to a .zip file, no zip file exists it creates a new ZIP file
     
    // increase script timeout value
    ini_set('max_execution_time', 5000);
     
    // create object
    $zip = new ZipArchive();
     
    // open archive 
    if ($zip->open('my-archive.zip', ZIPARCHIVE::CREATE) !== TRUE) {
    	die ("Could not open archive");
    }
     
    // initialize an iterator
    // pass it the directory to be processed
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../class"));
     
    // iterate over the directory
    // add each file found to the archive
    foreach ($iterator as $key=>$value) {
       $zip->addFile(realpath($key), realpath($key)) or die ("ERROR: Could not add file: $key");
    }
     
    // close and save archive
    $zip->close();
    echo "Archive created successfully.";
    Bonjour,

    j'ai trouve ce bout de script sur le net bien pratique.

    Cependant, quand je l'applique a un dossier, j'ai une archive corrompue en resultat. Le message est :
    fin de l'archive incorrect
    Avez vous deja rencontre ce probleme ou avez vous simplement une idee ?

    D'avance merci.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Sur Windows, la dll php-zip.dll pose certain souci

    tu peux essayer de télécharger une nouvelle version de la dll ici et remplace le.

  3. #3
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Merci pour ta reponse, ca fonctionne en ligne effectivement, j'aurai du penser a tester ...

    Je n'ai pas contre pas trouve de dll dans l'archive que tu m'as donne, je l'ai trouve ici (dans les sources windows ^^) :
    http://windows.php.net/snapshots/

    Pour le coup, je n'aurai jamais pense a faire un update d'un fichier d'extension ...

    J'ai une 2eme question tout de meme. Grace a ce bout de script, je cree une archive mais elle n'est cependant pas compressee. Est-ce possible de compresser l'archive derriere ?

    Je n'ai pas trouve dans la doc zip de reference a des methodes de compression (mais uniquement de decompression).

  4. #4
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Quand je regarde les sources de la classe zipfile (celle de phpmyadmin il me semble), je trouve ca dans les entetes :
    $fr = "x50x4bx03x04";
    $fr .= "x14x00"; // ver needed to extract
    $fr .= "x00x00"; // gen purpose bit flag
    $fr .= "x08x00"; // compression method
    $fr .= $hexdtime; // last mod time and date

    Le lien : http://www.tayo.fr/php-decompresser-...zip-astuce.php.

    Ce serai donc un truc a specifier dans l'en-tete ...

    Une idee plus precise ? Une methode faite pour ca ? ^^



    EDIT :

    Ca doit bien etre possible puisqu'il existe des fonctions telles que celle la :
    print zip_entry_compressedsize($r);

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    regarde ici

  6. #6
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Citation Envoyé par keaton2000 Voir le message
    Je n'ai pas trouve dans la doc zip de reference a des methodes de compression (mais uniquement de decompression).
    C'est de ca que je parlais.

    De plus sur le net, par abus de language, tout le monde parle compression zip alors qu'ils n'ont fait qu'une archive ... Et ca a tendance a pourrir les resultats google ...

  7. #7
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    J'ai l'impression que beaucoup de gens proposent de passer par des classes toutes faites, ce qui fait que personne ne s'interesse a la methode de compression ... Ca doit pas etre si sorcier ...

  8. #8
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    En initialisant:
    ZIPARCHIVE::CM_DEFLATE64 (entier)
    compression 64
    Dans mon $zip->open()

    J'ai un taux de compression de 76%. c'est pas la folie mais ca ira ... J'ai d'autres chats a fouetter ^^.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. compresser des fichiers dans un ZIP avec MSDOS
    Par Invité dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 13/10/2011, 12h11
  2. Compresser un répertoire avec bzip2/zlib
    Par 007007 dans le forum Langage
    Réponses: 2
    Dernier message: 18/08/2009, 12h48
  3. Compression avec l’API Zip de Java
    Par argoet dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 14/08/2008, 09h22
  4. [Zip] Compression de répertoires
    Par LeXo dans le forum Bibliothèques et frameworks
    Réponses: 16
    Dernier message: 22/08/2007, 15h30
  5. Bibliothèque zip avec cryptage AES
    Par guilig dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 01/02/2007, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo