Reduire le temps de compression avec la zlib

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 : Reduire le temps de compression avec la zlib

par Tchaka » 08 déc. 2005, 19:23

Hum soit je comprends pas ce que tu veux dire, soit on est pas sur la meme longueur d'onde.
Qu'est ce que tu veux dire par faire la compression une seule fois? Avec le code php que j'utilise (cf 1er post), c'est bien ce que je fais. Je compresse mon fichier juste avant de sortir du script, mais cette compression est très longue lorsque le fichier est gros et c'est ca mon soucis, est ce qu'il y a pas un réglage à faire du coté de php (par exemple php.ini) ou utiliser une autre fonction que gzencode() pour compresser?

Pour schématiser ca se passe comme ca:

// appel du script
-> toto.php file.ft

<?php
...
mon_fonction_qui_compresse_file_ft();
?>

// en sortie j'ai mon fichier file.ft compressé + un fichier fc obtenu avec la conversion

par zeus » 08 déc. 2005, 10:58

Donc j'en revient à mon idée de départ : pourquoi est ce que tu ne fait pas la compression 1 seule fois (avec un script php, si tu veux), même si elle est très longue

Ensuite, tu conserve ce fichier compressé

par Tchaka » 07 déc. 2005, 19:34

ah non c'est pas toujours le meme fichier ft, le script fait la conversion de format du fichier passé en paramètre.

Ce n'etait pas des scripts Perl mais des script sh et csh, donc j'etais obligé de les reécrire pour Windows.

par zeus » 07 déc. 2005, 11:05

le fichier .ft de départ est toujours le même où c'est dès qu'il change que tu exécute le script ?

Si ton script perl fonctionnait, pourquoi l'avoir abandonné ?

par Tchaka » 06 déc. 2005, 21:22

-- Est ce que tu as beaucoup de formats différents
Non, mon script prend en entrée un fichier toto.ft, comme ceci:

Code : Tout sélectionner

mon_script.php toto.ft
en sortie j'obtiens un fichier toto.fc. Donc le script convertit un fichier ft en fc grace à l'appel de binaires.

- Est-ce que tu modifie le contenu de ton fichier avec ton script php ?
non, mon fichier .ft est lu par des binaires pour créer le .fc. Le fichier ft reste le meme à la sortie du script

Ce que je te proposais, c'était de compresser tes fichiers manuellement en local chez toi, de les uploader sur ton serveur et que ton script PHP se contente de choisir le fichier à télécharger
je n'utilise pas de serveur. En fait, à la base cette opération de conversion de fichiers se faisait sur Unix et on utilisait des script shell. J'ai porté cette application sur Windows et j'ai donc choisi php pour remplacer les shell script. Enfin bref, il n'y a pas du tout de web et de serveur derrière mes scripts php, tout est local.

Voila, j'espere qu'avec ce surplus d'info tu pourras d'aider pour que la compresion de mon fichier ft d'entrée soit compressable en un temps raisonnable.

A+

par zeus » 06 déc. 2005, 10:41

- Est ce que tu as beaucoup de formats différents
- Est-ce que tu modifie le contenu de ton fichier avec ton script php ?

Ce que je te proposais, c'était de compresser tes fichiers manuellement en local chez toi, de les uploader sur ton serveur et que ton script PHP se contente de choisir le fichier à télécharger.

par Tchaka » 05 déc. 2005, 19:42

Ba le script doit compresser un seul fichier, mais comme j'ai précisé, il peut faire 3mo ou 150mo.

Alors je ne vois pas ce que tu veux dire par "pourquoi ne pas les compresser une bonne fois pour toutes". Je fais ma compression à la fin du script quand je n'ai pu besion du fichier. En fait j'utilise un script php qui permet de faire de la conversion de format de fichier, et une fois que j'ai mon fichier dans le nouveau format, je fais la compression du fichier d'entrée.

++

par zeus » 05 déc. 2005, 12:47

Il me semble que la zlib est prévue pour compresser des pages générées dynamiquement donc qui ont besoin d'être compressée APRES génération

Si tu as des fichiers de 3 à plusieurs centaines de Mo, pourquoi ne pas les compresser une bonne fois pour toutes et de ne pas les compresser à chaque fois ?

Reduire le temps de compression avec la zlib

par Tchaka » 01 déc. 2005, 20:21

Slt,

Avec un script php, je fais de la compression de fichier ayant des tailles variables, de quelques mo à plusieurs centaines. J'utilise la syntaxe suivante:
     * $data = implode("", file("$fic_a_compresser"));
    * $gzdata = gzencode($data, 9);
    *
    * if (!$fp = fopen("$fic_a_compresser.gz", "w")) {
    *     exit("Impossible de créer le fichier compresser $fic_a_compresser.gz\n");
    * } else {
    *     fwrite($fp, $gzdata);
    *     fclose($fp);
    * }
Mon probleme, c'est que la compression est longue, tres longue, voir interminable. J'ai essayé avec un fichier de 3mo, pas de probleme ca se fait rapidement. Mais avec un fichier de 160mo, 35 minutes apres la compression n'etait pas fini, et ceci meme avec le mode de compression le plus faible (valeur 1, faut pas demander en mode 9). J'ai un p4 2.2ghz et 512mo de ram, donc je pense pas que ce soit mon pc qui mouline. Y aurait il un moyen de reduire le temps de compression?

++