Ver Mensaje Individual
  #16 (permalink)  
Antiguo 18/04/2010, 10:00
Avatar de mayid
mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

Bueno, me das aliento. Ojalá lo resolvamos.

Cita:
ahora... ¿a cual contenido te refieres?
Yo estoy leyendo los archivos con un include, dentro de un buffer. Por contenido me refiero al contenido de cada uno de estos archivos. Con esos contenidos genero archivos dentro de un zip:

$zip->addFromString($key.".html", $content);

Publico todo el codigo:

Código PHP:
// create object
$zip = new ZipArchive();

 
// declaro un directorio en donde buscar archivos para comprimir
$directorio "./"
$puntos = array('.''..');
$item array_diff(scandir($directorio), $puntos);


// open archive 
if ($zip->open('AoIFreshManual.zip'ZIPARCHIVE::CREATE) !== TRUE) {
    die (
"Could not open archive");
}

// recorro la carpeta y genero un array con los nombres de archivos    
// bucle para recorrer el directorio    
foreach($item as $elemento) {
    
    
$ruta $directorio.$elemento;
    echo 
"Procesando: ".$ruta."<br>";
    
    
// si me encuentro con una carpeta, no hago nada.
    
if (is_dir($ruta)){}
    
    elseif (
is_file($ruta)){
        
        
$en_dos pathinfo($elemento);
        
$extension strtolower($en_dos['extension']);
        
$nombre_archivo $en_dos['filename'];
            
        
// solo modificaré archivos html
        
if($extension == "php")    {    
        
        
set_time_limit 90 );
        
        
// genero un buffer para almacenar las paginas en un array, y elimino el bufer.
        
$_SERVER["PHP_SELF"] = $ruta;
        
ob_start();
        include 
$ruta;
        
$pagina addslashes(ob_get_contents());
        
ob_end_clean();
        
$fileList[$nombre_archivo] =  $pagina// mysql_real_escape_string(addslashes( ))
        
}
    
        }
        } 
// foreach
        

// add files
foreach ($fileList as $key => $content) {
    
    
$zip->addFromString($key.".html"$content);
    
    
// $zip->addFile($f, $localFolder) or die ("ERROR: Could not add file: $f"); 
}
   
// close and save archive
$zip->close();
echo 
"Zip archive created successfully."
El problema con este codigo es que es interminable. Se cuelga el navegador. Subi el tiempo a 90 segundos porque antes no alcanzaba, pero ahora sencillamente no tengo resultados.

De cualquier manera, con 30 segundos me aparecian los contenidos en pantalla, cuando yo lo unico que quiero es generar archivos dentro de un zip (no imprimir nada en pantalla).