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).