Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/03/2010, 21:22
kalvera85
 
Fecha de Ingreso: septiembre-2008
Mensajes: 152
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: comprimir archivo

Muy bien mira lo primero que hago es crear un archivo csv de una tabla de la base de datos que tiene aprox 140000 registros con esta clase
csv.php
Código PHP:
<?php
function exportMysqlToCsv($table,$filename 'export.csv')
{
    
$csv_terminated "\r\n";
    
$csv_separator ";";
    
$csv_enclosed '"';
    
$csv_escaped "\\";
    
$sql_query "select * from $table";
 
    
// Gets the data from the database
    
$result mysql_query($sql_query);
    
$fields_cnt mysql_num_fields($result);
 
 
    
$schema_insert '';
 

    
// Format the data
    
while ($row mysql_fetch_array($result))
    {
        
$schema_insert '';
        for (
$j 0$j $fields_cnt$j++)
        {
            if (
$row[$j] == '0' || $row[$j] != '')
            {
 
                if (
$csv_enclosed == '')
                {
                    
$schema_insert .= $row[$j];
                } else
                {
                    
$schema_insert .= $csv_enclosed 
                    
str_replace($csv_enclosed$csv_escaped $csv_enclosed$row[$j]) . $csv_enclosed;
                }
            } else
            {
                
$schema_insert .= '';
            }
 
            if (
$j $fields_cnt 1)
            {
                
$schema_insert .= $csv_separator;
            }
        } 
// end for
 
        
$out .= $schema_insert;
        
$out .= $csv_terminated;
        
    } 
// end while
    
readdir;
    
$fp=fopen("REGISTROS.,sv","w+");
    
fwrite($fp,$out);
  
}
?>
Este script me genera un archivo llamado REGISTROS.csv que pesa 22MB, lo que necesito es bajarlo zipeado y lo intento hacer con este script que como les cometaba si funciona pero solo para archivos de 2MB máximo
zipear.php
Código PHP:
<?
require("zipfile.php");

$host 'localhost'// MYSQL database host adress
$db 'registros'// MYSQL database name
$user 'total'// Mysql Datbase user
$pass '123456'// Mysql Datbase password
 
// Connect to the database
$link mysql_connect($host$user$pass);
mysql_select_db($db);
 

$zipfile = new zipfile();
    
$zipfile->add_dir("bd/");
    
$zipfile->add_file(implode("",file("REGISTROS.csv")), "REGISTROS.csv");
     
    
header("Content-type: application/octet-stream");
    
header("Content-disposition: attachment; filename=BD.zip");
    echo 
$zipfile->file(); 

?>
La clase que mando llamar (zipfile.php) es la que se muestra en en link que puse cuando inicie el tema. Pues bien al ejecutar el script zipear.php no me muestra ningun error solo me dice el explorar que no puene abrir la pagina porque hubo un rpoblema con el servidor, les comnento que con le mismo codigo envio un archivo de +/- 1MB y funciona a la perfeccion, eso es lo que eh echo hasta ahora

Espero me puedan ayudar