Portekoi Posté 29 Mai 2012 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 29 Mai 2012 Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 29 Mai 2012 Auteur Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 29 Mai 2012 Partager 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
MangaII Posté 30 Mai 2012 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant