Aller au contenu

Générer un Zip à la volée?


Portekoi

Sujets conseillés

Bonjour,

Existe-t-il un moyen, en php, de générer un fichier zip (composé de X fichiers PDF) sans le créer physiquement sur le serveur?

Merci

Portekoi

Lien vers le commentaire
Partager sur d’autres sites

Si ton serveur est sous Linux, zip permet de rediriger la "sortie standard" (stdout), si on donne le nom "-" au fichier de sortie, donc aussi vers un pipe qui enverra cela vers le navigateur.

Par exemple :

zip -r - . | dd of=/dev/nrst0 obs=16k

compresse récursivement le répertoire courant, et l'envoie au programme dd qui l'enverra à son tour sur une bande magnétique.

Lien vers le commentaire
Partager sur d’autres sites

En faites, je dois le générer à la demande lorsque, par exemple, une vente c'est bien passée.

Et je veux éviter d'avoir à l'écrire sur le serveur.... En gros, pouvoir le générer et le balancer avec un header de type "zip" mais je ne sais pas si cela est possible.

Lien vers le commentaire
Partager sur d’autres sites

Ca devrait être trivial avec une classe php telle que http://solomongaby.users.phpclasses.org/package/2322-PHP-Create-ZIP-file-archives-and-serve-for-download.html

Dans le descriptif, ils mettent ceci :

The class can generate the packed archive as a string value.

et cette chaîne de caractères peut s'envoyer vers le navigateur...

Lien vers le commentaire
Partager sur d’autres sites

A priori, ca ne pose pas vraiement de problème d'écrire le fichier sur le disque.

Tu peux l'écrire dans le dossier /tmp (si tu es sur un linux).

Ou au pire, le créé, l'envoyer au client et le supprimer.

Cette soluce permet notament d'utiliser des scripts en ligne de commandes (zip, gz, tar...) qui sont plus intéressantes à mon avis, surtout pour compresser un dossier, que les extensions PHP.

Il existe aussi des outils pour fusionner les PDF en 1 seul fichier.

Le script PHP reste très simple

1. lancer la création du zip
2. envoyer au client (readfile par exemple)
3. supprimer le fichier du serveur (unlink)

En terme de performances, on reste très efficace ... je ne suis pas sur qu'on voit vraiement la différence avec un process hors disque qui forcément va consommer beaucoup plus de mémoire.

Modifié par MangaII
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...