Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Annyh

[Resolvido] como usar php_zip em um script ?

Recommended Posts

peguei um script de backup do laboratorio de script, é um script para gerar sql para backup de banco de dados, foi modificado por jnejunior, Andrey, Carlos, o script é muito bom, só gostaria de saber como compactar apenas o resultado gerado deste script, já que o resultado nem sempre esta em uma variável, no script vi que tem um printf()...

 

este é o script de backup:

 

<!doctype html>
<html>
   <head>
       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
   </head>
   <body>
       <?php
               $PDO = new PDO( 'mysql:host=localhost', 'root', '' );
               $PDO->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
               $PDO->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC );
       ?>
       <form method="GET">
           Selecione o banco de dados: <select name="database" onchange="this.form.submit()">
           <?php
               foreach( $PDO->query( 'SHOW DATABASES' )->fetchAll() as $index => $data ){
                   if( $_GET['database'] == $data['Database'] ){
                       echo '<option value="'.$data['Database'].'" selected>', $data['Database'], '</option>';
                   }else{
                       echo '<option value="'.$data['Database'].'">', $data['Database'], '</option>';
                   }
               }
           ?>
           </select><br />
        </form>
        <form method="POST">
                <?php 
                   if( !empty( $_GET['database'] ) ){
                       echo 'Selecione as tabelas: <br /> 
                            <select name="table[]" multiple="multiple">';
                       $Tables = $PDO->query( 'SHOW TABLES FROM `'.$_GET['database'].'`' )->fetchAll();
                       for( $i = 0; $i < sizeOf( $Tables ); ++$i ){
                            foreach( $Tables[ $i ] as $index => $data ){
                                echo '<option value="'.$data.'">'.$data.'</option>';
                            }
                       }
                       echo '</select><br />';
                       echo '<input type="submit" value="Fazer Backup" name="backup">';
                   }
                ?> 
       </form>
       <?php
               echo '<pre>';
               if( isset( $_POST['backup'] ) ){
                   $PDO->query( 'USE `'.$_GET['database'].'`' );
                   echo '<textarea cols="150" rows="60">';
                   foreach( $_POST['table'] as $index => $data ){
                        $create = $PDO->query( 'SHOW CREATE TABLE `'.$data.'`' )->fetchAll();
                        foreach( $create as $createTable){
                            echo $createTable[ 'Create Table' ], ";\n\n";
                        }
                        $select = $PDO->query( 'SELECT * FROM `'.$data.'`' )->fetchAll();
                        for( $i = 0; $i < sizeOf( $select ); ++$i ){
                             foreach( $select[ $i ] as $field => $value ){
                                 $fields[ $field ] = '`'.$field.'`';
                                 if( !is_numeric( $value ) ){
                                     $values[  ] = sprintf( "'%s'", $value );
                                 }else{
                                     $values[  ] = ( float ) $value;
                                 }
                             }
                             $result[ ] = sprintf( '( %s )', implode( ', ', $values ) );
                             unset( $values );
                        }
                        printf( "INSERT INTO `%s`( %s ) \nVALUES \n%s;\n\n", $data, implode( ',', $fields ), implode( ", \n", $result ) );
		unset( $result, $fields );
                   }
                   echo '</textarea>';
               }
       ?>
   </body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei uma alterada para criar um arquivo com os dados comprimidos no formato gzip.

 

Vai listar o SQL gerado e criar no mesmo diretório o arquivo .gz, depois você pode alterar para o diretório de sua escolha

 

 

<!doctype html>
<html>
   <head>
       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
   </head>
   <body>
       <?php
               $PDO = new PDO( 'mysql:host=localhost', 'root', '' );
               $PDO->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
               $PDO->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC );
       ?>
       <form method="GET">
           Selecione o banco de dados: <select name="database" onchange="this.form.submit()">
           <?php
               foreach( $PDO->query( 'SHOW DATABASES' )->fetchAll() as $index => $data ){
                   if( $_GET['database'] == $data['Database'] ){
                       echo '<option value="'.$data['Database'].'" selected>', $data['Database'], '</option>';
                   }else{
                       echo '<option value="'.$data['Database'].'">', $data['Database'], '</option>';
                   }
               }
           ?>
           </select><br />
        </form>
        <form method="POST">
                <?php 
                   if( !empty( $_GET['database'] ) ){
                       echo 'Selecione as tabelas: <br /> 
                            <select name="table[]" multiple="multiple">';
                       $Tables = $PDO->query( 'SHOW TABLES FROM `'.$_GET['database'].'`' )->fetchAll();
                       for( $i = 0; $i < sizeOf( $Tables ); ++$i ){
                            foreach( $Tables[ $i ] as $index => $data ){
                                echo '<option value="'.$data.'">'.$data.'</option>';
                            }
                       }
                       echo '</select><br />';
                       echo '<input type="submit" value="Fazer Backup" name="backup">';
                   }
                ?> 
       </form>
       <?php
               echo '<pre>';
               if( isset( $_POST['backup'] ) ){
                   $PDO->query( 'USE `'.$_GET['database'].'`' );
                   echo '<textarea cols="150" rows="60">';
                   foreach( $_POST['table'] as $index => $data ){
                        $create = $PDO->query( 'SHOW CREATE TABLE `'.$data.'`' )->fetchAll();
                        foreach( $create as $createTable){
                            echo $Zlib[ ] = $createTable[ 'Create Table' ] . ";\n\n";
                        }
                        $select = $PDO->query( 'SELECT * FROM `'.$data.'`' )->fetchAll();
                        for( $i = 0; $i < sizeOf( $select ); ++$i ){
                             foreach( $select[ $i ] as $field => $value ){
                                 $fields[ $field ] = '`'.$field.'`';
                                 if( !is_numeric( $value ) ){
                                     $values[  ] = sprintf( "'%s'", $value );
                                 }else{
                                     $values[  ] = ( float ) $value;
                                 }
                             }
                             $result[ ] = sprintf( '( %s )', implode( ', ', $values ) );
                             unset( $values );
                        }
                        echo $Zlib[ ] = sprintf( "INSERT INTO `%s`( %s ) \nVALUES \n%s;\n\n", $data, implode( ',', $fields ), implode( ", \n", $result ) );
                       unset( $result, $fields );
                   }
                   echo '</textarea>';
	    $gzdata = gzencode( implode( '', $Zlib ), 9 );
	    $fp = fopen("backup_{$_GET['database']}.sql.gz", "w");
	    fwrite( $fp, $gzdata );
	    fclose( $fp );
               }
       ?>
   </body>
</html>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.