Portekoi Posté 29 Mai 2012 Posté 29 Mai 2012 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
Dan Posté 29 Mai 2012 Posté 29 Mai 2012 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.
Portekoi Posté 29 Mai 2012 Auteur Posté 29 Mai 2012 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.
Dan Posté 29 Mai 2012 Posté 29 Mai 2012 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...
MangaII Posté 30 Mai 2012 Posté 30 Mai 2012 (modifié) 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 zip2. 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é 30 Mai 2012 par MangaII
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant