compresser un fichier sur le serveur - PHP - Programmation
Marsh Posté le 30-10-2002 à 10:54:45
Y a plusieurs solutions :
* tu utilises les fonctions de compression zlib (si tu es sous Unix, il faut que ton PHP ait été compilé avec le module approprié ; sous Windows il faut que t'ailles bidouiller dans le php.ini). Ca fait des .gz assez facilement.
* tu passes par un exec() qui lance une commande système qui va bien, genre gzip sous Unix ou pkzip sous Windows.
A mon avis, la première solution reste la plus propre et la plus durable.
Marsh Posté le 30-10-2002 à 11:12:19
Taiche a écrit a écrit : Y a plusieurs solutions : * tu utilises les fonctions de compression zlib (si tu es sous Unix, il faut que ton PHP ait été compilé avec le module approprié ; sous Windows il faut que t'ailles bidouiller dans le php.ini). Ca fait des .gz assez facilement. * tu passes par un exec() qui lance une commande système qui va bien, genre gzip sous Unix ou pkzip sous Windows. A mon avis, la première solution reste la plus propre et la plus durable. |
D'après les vagues essais que j'avais fait à une époque, il me semble qu'on ne peut pas compresser un fichier directement : il faut lire le fichier et "l'envoyer" dans le compresseur. Du coup, ton gz ne contient que les données compressées, ce n'est pas une archive compressée contenant l'ancien nom du fichier. Est-ce vrai ?
Marsh Posté le 30-10-2002 à 11:33:59
Oui, du moins je crois. Il faut lire les données pour que la fonction gzwrite() puisse les compresser et les écrire dans ton fichier de destination.
Marsh Posté le 30-10-2002 à 11:57:28
Taiche a écrit a écrit : Oui, du moins je crois. Il faut lire les données pour que la fonction gzwrite() puisse les compresser et les écrire dans ton fichier de destination. |
Et donc tu "perds" le nom du fichier initial ?
Ca te crée pas un truc à la WinZip ou quand tu ouvres le fichier, tu vois le nom du fichier compressé et des infos supplémentaires du style le chemin, etc.
Marsh Posté le 30-10-2002 à 13:17:40
Taiche a écrit a écrit : Oui, du moins je crois. Il faut lire les données pour que la fonction gzwrite() puisse les compresser et les écrire dans ton fichier de destination. |
je ne comprend pas non plus!
car un fichier zip contient un ou des fichiers,
Marsh Posté le 30-10-2002 à 14:25:41
berceker a écrit a écrit : je ne comprend pas non plus! car un fichier zip contient un ou des fichiers, |
Ca proviendrait pas du fait que la compression est au format gz et non pas zip ?
Le format gz ne compresse qu'un seul fichier à la fois (il faut créer une archive de type tar par exemple pour compresser plusieurs fichiers dans un seul fichier .gz ).
Par contre, il doit surement mettre un nom de fichier pour que la décompression puisse se faire, mais lequel, ca j'en sais rien.
Marsh Posté le 30-10-2002 à 14:45:41
Bon alors j'réponds à tout d'un coup : comme le dit omega2, gzip ne compresse qu'un seul fichier. Pour en compresser plusieurs, on fait d'abord un .tar via la commande tar cvf archive.tar * par exemple. Puis on compresse ce fichier via gzip archive.tar.
Ca donnera un fichier appelé archive.tar.gz (le nom original du fichier est donc bien conservé, vu que c'est tout ce qui se situe AVANT le .gz), qui est l'équivalent d'un .zip mais avec un meilleur taux de compression.
Vala.
Marsh Posté le 30-10-2002 à 17:34:05
Merci , je vais voir de ce coté
Marsh Posté le 30-10-2002 à 10:42:18
bonjours!
je voudrais savoir s'il existe une methode pour compresser un fichier quelconque sur le serveur.
en faite je fais une sauvegarde automatique de ma base de donnée qui fait actuellement 40Mo, ouff!... je voudrais le compresser dynamiquement. Existe il un moyen?....
Merci
Message édité par berceker le 30-10-2002 à 10:42:46
---------------
Si je suis près de toi c'est soit pour t'embrasser ou te croquer, alors à ce moment là rappelle toi de ce que tu m'as fait. du bien ou du mal?