Foros del Web » Programando para Internet » PHP »

Ayuda con Script para compresion en zip

Estas en el tema de Ayuda con Script para compresion en zip en el foro de PHP en Foros del Web. Hola genteee!, como les va? Mi problema es el siguiente haber si a alguien se lo ocurre como arreglarlo. Este script comprime los archivos: Código ...
  #1 (permalink)  
Antiguo 23/12/2009, 11:29
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs As
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 0
De acuerdo Ayuda con Script para compresion en zip

Hola genteee!, como les va?

Mi problema es el siguiente haber si a alguien se lo ocurre como arreglarlo.

Este script comprime los archivos:
Código PHP:
<?php

class zip{
   var 
$datasec = array();
   var 
$ctrl_dir = array();
   var 
$eof_ctrl_dir "\x50\x4b\x05\x06\x00\x00\x00\x00";
   var 
$old_offset 0;
 
   function 
add_dir($name) {
      
$name str_replace("""/"$name);
 
      
$fr "\x50\x4b\x03\x04";
      
$fr .= "\x0a\x00";
      
$fr .= "\x00\x00";
      
$fr .= "\x00\x00";
      
$fr .= "\x00\x00\x00\x00";
 
      
$fr .= pack("V",0);
      
$fr .= pack("V",0);
      
$fr .= pack("V",0);
      
$fr .= pack("v"strlen($name) );
      
$fr .= pack("v");
      
$fr .= $name;
      
$fr .= pack("V"0);
      
$fr .= pack("V"0);
      
$fr .= pack("V"0);
 
      
$this -> datasec[] = $fr;
      
$new_offset strlen(implode(""$this->datasec));
 
      
$cdrec "\x50\x4b\x01\x02";
      
$cdrec .="\x00\x00";
      
$cdrec .="\x0a\x00";
      
$cdrec .="\x00\x00";
      
$cdrec .="\x00\x00";
      
$cdrec .="\x00\x00\x00\x00";
      
$cdrec .= pack("V",0);
      
$cdrec .= pack("V",0);
      
$cdrec .= pack("V",0);
      
$cdrec .= pack("v"strlen($name) );
      
$cdrec .= pack("v");
      
$cdrec .= pack("v");
      
$cdrec .= pack("v");
      
$cdrec .= pack("v");
      
$ext "\x00\x00\x10\x00";
      
$ext "\xff\xff\xff\xff";
      
$cdrec .= pack("V"16 );
      
$cdrec .= pack("V"$this -> old_offset );
      
$cdrec .= $name;
 
      
$this -> ctrl_dir[] = $cdrec;
      
$this -> old_offset $new_offset;
      return;
   }
 
   function 
add_fileFromString($data,$name){
      
$name str_replace("""/"$name);
      
$unc_len strlen($data);
      
$crc crc32($data);
      
$zdata gzcompress($data);
      
$zdata substr ($zdata2, -4);
      
$c_len strlen($zdata);
      
$fr "\x50\x4b\x03\x04";
      
$fr .= "\x14\x00";
      
$fr .= "\x00\x00";
      
$fr .= "\x08\x00";
      
$fr .= "\x00\x00\x00\x00";
      
$fr .= pack("V",$crc);
      
$fr .= pack("V",$c_len);
      
$fr .= pack("V",$unc_len);
      
$fr .= pack("v"strlen($name) );
      
$fr .= pack("v");
      
$fr .= $name;
      
$fr .= $zdata;
      
$fr .= pack("V",$crc);
      
$fr .= pack("V",$c_len);
      
$fr .= pack("V",$unc_len);
 
      
$this -> datasec[] = $fr;
      
$new_offset strlen(implode(""$this->datasec));
 
      
$cdrec "\x50\x4b\x01\x02";
      
$cdrec .="\x00\x00";
      
$cdrec .="\x14\x00";
      
$cdrec .="\x00\x00";
      
$cdrec .="\x08\x00";
      
$cdrec .="\x00\x00\x00\x00";
      
$cdrec .= pack("V",$crc);
      
$cdrec .= pack("V",$c_len);
      
$cdrec .= pack("V",$unc_len);
      
$cdrec .= pack("v"strlen($name) );
      
$cdrec .= pack("v");
      
$cdrec .= pack("v");
      
$cdrec .= pack("v");
      
$cdrec .= pack("v");
      
$cdrec .= pack("V"32 );
      
$cdrec .= pack("V"$this -> old_offset );
 
      
$this -> old_offset $new_offset;
 
      
$cdrec .= $name;
      
$this -> ctrl_dir[] = $cdrec;
   }
   
   function 
add_file($data$name) {
      
$fp fopen($data,"r");
      
$data fread($fp,filesize($data));
      
fclose($fp);
      
$name str_replace("""/"$name);
      
$unc_len strlen($data);
      
$crc crc32($data);
      
$zdata gzcompress($data);
      
$zdata substr ($zdata2, -4);
      
$c_len strlen($zdata);
      
$fr "\x50\x4b\x03\x04";
      
$fr .= "\x14\x00";
      
$fr .= "\x00\x00";
      
$fr .= "\x08\x00";
      
$fr .= "\x00\x00\x00\x00";
      
$fr .= pack("V",$crc);
      
$fr .= pack("V",$c_len);
      
$fr .= pack("V",$unc_len);
      
$fr .= pack("v"strlen($name) );
      
$fr .= pack("v");
      
$fr .= $name;
      
$fr .= $zdata;
      
$fr .= pack("V",$crc);
      
$fr .= pack("V",$c_len);
      
$fr .= pack("V",$unc_len);
 
      
$this -> datasec[] = $fr;
      
$new_offset strlen(implode(""$this->datasec));
 
      
$cdrec "\x50\x4b\x01\x02";
      
$cdrec .="\x00\x00";
      
$cdrec .="\x14\x00";
      
$cdrec .="\x00\x00";
      
$cdrec .="\x08\x00";
      
$cdrec .="\x00\x00\x00\x00";
      
$cdrec .= pack("V",$crc);
      
$cdrec .= pack("V",$c_len);
      
$cdrec .= pack("V",$unc_len);
      
$cdrec .= pack("v"strlen($name) );
      
$cdrec .= pack("v");
      
$cdrec .= pack("v");
      
$cdrec .= pack("v");
      
$cdrec .= pack("v");
      
$cdrec .= pack("V"32 );
      
$cdrec .= pack("V"$this -> old_offset );
 
      
$this -> old_offset $new_offset;
 
      
$cdrec .= $name;
      
$this -> ctrl_dir[] = $cdrec;
   }
 
   function 
file() {
      
$data implode(""$this -> datasec);
      
$ctrldir implode(""$this -> ctrl_dir);
 
      return
      
$data .
      
$ctrldir .
      
$this -> eof_ctrl_dir .
      
pack("v"sizeof($this -> ctrl_dir)) .
      
pack("v"sizeof($this -> ctrl_dir)) .
      
pack("V"strlen($ctrldir)) .
      
pack("V"strlen($data)) .
      
"\x00\x00";
   }
}
?>
Funciona perfecto.

Este sirve para seleccionar los archivos para comprimir:

Código PHP:
<?php

/*
Comienzo del script que genera el bukup de los archivos y comprime el .sql de la base de datos creada previamente

Autor: Marcos Comelli
Copyright: 2009

Parte del Script que comprime todos los archivos y lo genera con el nombre de la fecha en que se creo
*/

/*valor de la variable nombre_archivo es igual a la fecha*/

/*Defino la variable para los nombres de los archivos*/
$nombre_archivo time();
$archivo date('j n Y g i A');
$zip = new zip();
 
//Aca en la linea de abajo se ingresan los archivos a comprimir
$zip->add_fileFromString("Esto es una prueba\n Estoy probando hola 1, 2, 3 probando... ""/bukup/content");
 
$fileName substr(md5(rand()),0,5).".$archivo.zip";
$fd fopen ($fileName"wb");
$out fwrite ($fd$zip->file());
fclose ($fd);

echo 
date('j n Y g i A');

?>
Mi problema es que en la ruta del archivo para comprimir no puedo poner una carpeta, solo puedo ingresar archivos con su correspondiente formato.
__________________
Marcos.
  #2 (permalink)  
Antiguo 23/12/2009, 11:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Ayuda con Script para compresion en zip

simplemente necesitas iterar el directorio...

e ir agregando los archivos individualmente, no veo el problema...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 23/12/2009, 11:39
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs As
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Ayuda con Script para compresion en zip

Si, vos decís que ponga todas las lineas con todos los archivos, pero son 500 archivos para comprimir. No hay alguna forma de poner un directorio y listo?
__________________
Marcos.
  #4 (permalink)  
Antiguo 23/12/2009, 11:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Ayuda con Script para compresion en zip

con "iterar el directorio" me refiero a que:

- lo abras con opendir()
- lo cicles con while()

etc, etc...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 23/12/2009, 11:50
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs As
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Ayuda con Script para compresion en zip

ok voy a probar. Un msg mas y llegas a los 7000 jeje xD
__________________
Marcos.
  #6 (permalink)  
Antiguo 23/12/2009, 12:14
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs As
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Ayuda con Script para compresion en zip

No podrías clasificarme mejor como usar las funciones que pusiste. Que es ciclar?

Disculpa mi ignorancia recién empiezo.
__________________
Marcos.
  #7 (permalink)  
Antiguo 23/12/2009, 12:16
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Ayuda con Script para compresion en zip

Ciclar, iterar, usar un bucle, hacer un loop todas definiciones equivalentes
__________________
HV Studio
Diseño y desarrollo web
  #8 (permalink)  
Antiguo 23/12/2009, 12:21
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs As
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Ayuda con Script para compresion en zip

Yo necesito hacer un bukup de una sola carpeta que adentro tiene mas de 500 archivos. El código lo saque de Internet, no se como modificarlo.

Gracias por la ayuda.
__________________
Marcos.
  #9 (permalink)  
Antiguo 23/12/2009, 13:49
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs As
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Ayuda con Script para compresion en zip

Empecemos de otra forma, esta bien ese código que estoy usando? alguien propone alguno mejor? alguna clase que ya lo haga todo?
__________________
Marcos.
  #10 (permalink)  
Antiguo 23/12/2009, 13:59
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Ayuda con Script para compresion en zip

Supongo que con "bukup" te referis a hacer una copia de seguridad o "backup" de los archivos...
Si es eso a lo que te referis, deberias estudiar la funcion copy()

http://ar2.php.net/manual/en/function.copy.php
__________________
HV Studio
Diseño y desarrollo web
  #11 (permalink)  
Antiguo 23/12/2009, 14:03
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs As
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Ayuda con Script para compresion en zip

Si eso es hacer bukup, pero de que me sirve solo mover los archivos. Yo los tengo que comprimir para poder guardarlos en el servidor o enviarlo mediante email.
__________________
Marcos.
  #12 (permalink)  
Antiguo 23/12/2009, 16:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Ayuda con Script para compresion en zip

definitivamente sería mas sencillo que todo estuviera a la mano, no lo dudo...

en este caso, la clase es muy genérica, y por lo tanto debe funcionar perfectamente...


el implementar un método extra es cosa sencilla, digamos, solo para agregar carpetas completamente...

ojala existiera algo que lo haga todo, pero así... no existirían los programadores, lamentablemente debes implementar lo que necesites por tu cuenta...

sin mas, suerte!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:28.