zipper des fichiers en php

zipper des fichiers en php - PHP - Programmation

Marsh Posté le 21-07-2006 à 11:00:32    

bonjour à tous,  
comme indiqué dans le titre, je cherche à zipper des fichiers avec php... j'ai une petite idée de comment faire (utiliser des commandes unix genre exec("gzip... " ); ou je ne sais pas quoi) mais je voulais savoir si il existe un moyen plus optimal pour faire ça...
 
merci d'avance
 
Freed

Reply

Marsh Posté le 21-07-2006 à 11:00:32   

Reply

Marsh Posté le 21-07-2006 à 11:15:07    

il existe une lib pour zipper des fichiers en php mais...je ne sais plus le nom :sweat:


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 21-07-2006 à 12:44:39    

oui j'ai vu le zip.lib.php entre temps... mais le probleme c que le fichier s'affiche avec un header()... moi j'aimerai que le fichier se créé physiquement sur le serveur et faire un lien dessus.. comment faire ??
 
pour l'instant j'ai fait ça :
 

Code :
  1. if($zip_month)
  2. {
  3. if(!empty($_POST['year']))
  4. {
  5. $_SESSION['selected_year']=$_POST['year'];
  6. }
  7. else
  8. {
  9. $_SESSION['selected_year']=date("Y" );
  10. }
  11. $_SESSION['selected_month']=$_POST['mois'];
  12. $_SESSION['selected_date1']=mktime(0, 0, 0, $_SESSION['selected_month'], 1, $_SESSION['selected_year']);
  13. $_SESSION['selected_date2']=mktime(23, 59, 59, $_SESSION['selected_month']+1, 0, $_SESSION['selected_year']);
  14. $sql="SELECT * FROM factures WHERE type='factures' AND date_reg BETWEEN '$_SESSION[selected_date1]' AND '$_SESSION[selected_date2]' ORDER BY numero_facture DESC";
  15. $query=mysql_query($sql) or die(mysql_error());
  16.  
  17.      
  18.     // création d'un objet 'zipfile'
  19.     $zip = new zipfile();
  20.     // ajout du fichier dans cet objet  
  21. while($data=mysql_fetch_array($query))
  22. {
  23. $filename="factures/".$data['numero_facture'].".pdf";
  24. if(file_exists($filename))
  25. {
  26.     $fp = fopen ($filename, 'r');
  27.     $content = fread($fp, filesize($filename));
  28.     fclose ($fp);
  29.     $zip->addfile($content, $filename);
  30. }
  31. }
  32.     // production de l'archive' Zip
  33.     $archive = $zip->file();
  34.     // entêtes HTTP
  35.   //  header('Content-Type: application/x-zip');
  36.     // force le téléchargement
  37.   //  header('Content-Disposition: inline; filename=factures/$zip_month.zip');  
  38.     // envoi du fichier au navigateur
  39.     echo $archive;
  40. }


Message édité par freed102 le 21-07-2006 à 12:46:23
Reply

Marsh Posté le 21-07-2006 à 12:55:08    

a la place de  

Code :
  1. echo $archive;


tu ecris sur le disque

Code :
  1. file_put_contents('monfichier.zip', $archive);


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 21-07-2006 à 13:06:16    

ah je vais essayer ça !! merci ! :) :jap:

Reply

Marsh Posté le 21-07-2006 à 13:09:47    

alors il me met ça : Fatal error: Call to undefined function: file_put_contents() in /u/clonecop/public_html/php/admin/valid.php on line 45
 
visiblement c du php5
 
file_get_contents ?

Message cité 1 fois
Message édité par freed102 le 21-07-2006 à 13:10:42
Reply

Marsh Posté le 21-07-2006 à 13:12:03    

j'ai trouvé ça :
 

Code :
  1. if(!function_exists('file_put_contents')) {
  2. function file_put_contents($filename, $data, $file_append = false) {
  3.   $fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
  4.   if(!$fp) {
  5.    trigger_error('file_put_contents ne peut pas écrire dans le fichier.', E_USER_ERROR);
  6.    return;
  7.   }
  8.   fputs($fp, $data);
  9.   fclose($fp);
  10. }
  11. }

Reply

Marsh Posté le 21-07-2006 à 13:15:47    

freed102 a écrit :


visiblement c du php5


a oui effectivement
http://uk2.php.net/manual/en/funct [...] ntents.php


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 21-07-2006 à 13:16:47    

ça a l'air de marcher mais j'ai une erreur :
 
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 286958 bytes) in /u/clonecop/public_html/php/admin/zip.lib.php on line 132

Reply

Marsh Posté le 21-07-2006 à 13:16:47   

Reply

Marsh Posté le 21-07-2006 à 13:18:26    

freed102 a écrit :

ça a l'air de marcher mais j'ai une erreur :
 
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 286958 bytes) in /u/clonecop/public_html/php/admin/zip.lib.php on line 132


 
C'est sur ton propre serveur ?

Reply

Marsh Posté le 21-07-2006 à 13:19:42    

non c chez model-fx
je viens d'essayer un ini_set (merci google) mais je sais pas quoi mettre comme valeur

Reply

Marsh Posté le 21-07-2006 à 13:23:50    

freed102 a écrit :

non c chez model-fx
je viens d'essayer un ini_set (merci google) mais je sais pas quoi mettre comme valeur


 
memory_limit
 
:o
 
et si ça marche pas, c'est DTC. Fallait prendre un hébergeur sérieux. :o

Reply

Marsh Posté le 21-07-2006 à 13:27:16    

j'ai fait ça ini_set("memory_limit",'64M');
 
mais j'ai toujours des erreurs :
 
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 285435 bytes) in /u/clonecop/public_html/php/admin/zip.lib.php on line 132

Reply

Marsh Posté le 21-07-2006 à 13:32:48    

freed102 a écrit :

j'ai fait ça ini_set("memory_limit",'64M');
 
mais j'ai toujours des erreurs :
 
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 285435 bytes) in /u/clonecop/public_html/php/admin/zip.lib.php on line 132


 
oué, ben tu essayes d'augmenter encore plus, mais si ça ne marche pas, c'est que le memory_limit est vérouillé, et dans ce cas, tu peux strictement rien faire... Ben ouai, le mutualisé, c'est comme ça, c'est de l'hébergement de piètre qualité avec des features réduites. [:spamafote]

Reply

Marsh Posté le 21-07-2006 à 13:38:39    

Mais il faut combien ton fichier zip  :??:  
Plus de 64Megas???


Message édité par anapajari le 21-07-2006 à 13:38:54
Reply

Marsh Posté le 21-07-2006 à 13:49:38    

bah il est pas lourd le fichier fini mais ya genre 80 fichiers pdf de 300ko à chaque fois

Reply

Marsh Posté le 21-07-2006 à 14:09:30    

Hermes le Messager a écrit :

oué, ben tu essayes d'augmenter encore plus, mais si ça ne marche pas, c'est que le memory_limit est vérouillé, et dans ce cas, tu peux strictement rien faire... Ben ouai, le mutualisé, c'est comme ça, c'est de l'hébergement de piètre qualité avec des features réduites. [:spamafote]


on ne peut rien faire avec le php.ini ?

Reply

Marsh Posté le 21-07-2006 à 20:20:30    

freed102 a écrit :

on ne peut rien faire avec le php.ini ?


 
Si tu as pas accès au serveur, t'as pas accès au php.ini :o

Reply

Marsh Posté le 21-07-2006 à 20:51:40    

dans tous les cas , si tu as acces au php.ini , il y a 3 variables a toucher   :memory_limit   post_max_size et http_mx_size ( ou des trucs du genre , je te les retrouverai lundi matin si tu veux )  
 
avec obligatoirement http_max_size < post_max_size < memory_limit

Reply

Marsh Posté le 22-07-2006 à 02:01:29    

si j'ai acces au php.ini ... l'administrateur m'y a donné acces sur le root du site

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed