Ir para conteúdo
jeffersonmachado

extractto não funciona

Recommended Posts

Olá,

 

Alguém sabe me dizer porque com o código abaixo o extractto não grava/descompacta o arquivo no diretório?

 

Grato,

 

 

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache'); 


function send_message($id, $message, $progress) {
    $d = array('message' => $message , 'progress' => $progress);
      
    echo "id: $id" . PHP_EOL;
    echo "data: " . json_encode($d) . PHP_EOL;
    echo PHP_EOL;
    //echo str_repeat( ' ', 4096); 
      
    ob_flush();
    flush();
}

$path = 'tmp/ripabx_update.zip';

$versao = file_get_contents("https://repo.results.com.br/repo/ripabx/update/version");
$zip = new ZipArchive;
send_message(10,'START', 'Process complete');
if ($zip->open($path) === true) {
      if ($zip->setPassword($versao)){
          send_message(10,"File $path Num:$zip->numFiles Sta:$zip->status Ver:$versao", "Process complete");
          $previuosProgress = 0;
$myfile = fopen("testfile.txt", "w");
          for($i = 0; $i < $zip->numFiles; $i++) {
             if (file_exists($zip->getNameIndex($i))) {
                unlink($zip->getNameIndex($i));
             }
             if ($zip->extractTo('..', array($zip->getNameIndex($i))) === true) {
                $extrac = "Funcionou";
             } else {
                $extrac = "Não Funcionou ";
             }
             $progress = round($i / $zip->numFiles * 100);                       
             if ($progress > $previuosProgress ) {
                $previuosProgress = $progress;
                send_message($i, 'on unzip ' . $zip->getNameIndex($i) . ' Ret:' . $extrac, $progress); 
             }
          }
          $zip->close();

          send_message(10,'CLOSE', 'Process complete');
       } else {
           send_message(10,'CLOSE', 'Password failed');
       }
} else {
     send_message(10,'CLOSE', 'Open failed');
}
?>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por führ
      Olá
      tenho uma aplicação de controle onde envio o arquivo txt zipado para leitura e insert no bd, acontece q não estou conseguindo inserir todos as linhas do arquivo, gravando somente uma (a primeira), não consigo ver onde estou errando.
      Adaptei de uma aplicação onde importo um txt, ignorando o cabeçalho e linhas em branco se existirem, isto também não estou conseguindo no arquivo zipado,
      Se puderem me ajudar, agradeço.
      segue código
       
      ///////////////////////////////////////// $pathFile = $this->Ini->path_doc . "/" . {arquivo}; $zip = zip_open($pathFile); if ($zip) { while ($zip_entry = zip_read($zip)) { echo "<p>"; echo "Name: " . zip_entry_name($zip_entry) . "<br />"; if (zip_entry_open($zip, $zip_entry)) { $contents = zip_entry_read($zip_entry); echo "File Contents:<br/>"; echo $contents; //if(strlen(trim($zip_entry)) >= 0) { $dados = explode(";", $contents, 1028); $campo1 = str_replace("'","",$dados[0]); //RETIRA O ' DA COLUNA $campo2 = str_replace("'","",$dados[1]); $campo3 = str_replace("'","",$dados[2]); $campo4 = str_replace("'","",$dados[3]); $campo5 = str_replace("'","",$dados[4]); $campo6 = str_replace("'","",$dados[5]); $campo7 = str_replace("'","",$dados[6]); $campo8 = str_replace("'","",$dados[7]); $campo9 = str_replace("'","",$dados[8]); $campo10 = str_replace("'","",$dados[9]); $campo11 = str_replace("'","",$dados[10]); $campo12 = str_replace("'","",$dados[11]); $campo13 = str_replace("'","",$dados[12]); $campo14 = str_replace("'","",$dados[13]); $campo15 = str_replace("'","",$dados[14]); $campo16 = str_replace("'","",$dados[15]); $campo17 = str_replace("'","",$dados[16]); $campo18 = str_replace("'","",$dados[17]); $campo19 = str_replace("'","",$dados[18]); $data = $campo9; $dia = substr($data, 0, 2); $mes = substr($data, 3, 2); $ano = substr($data, 6, 4); $campo9_gravar = $ano."-".$mes."-".$dia; $valor_bruto = floatval(str_replace(',', '.', str_replace('.', '', $campo6))); $total_nfe = floatval(str_replace(',', '.', str_replace('.', '', $campo17))); $quantidade = floatval(str_replace(',', '.', str_replace('.', '', $campo4))); echo $inserir = sc_exec_sql("INSERT into anual(ncm, descricao, cfop, quantidade, unidade, valor_bruto, opracao_nfe, situacao_nfe, data_nfe, ie_emitente, uf_emitente, ie_destinatario, uf_destino, modelo_df, serie_nfe, nfe, total_nfe, situacao_aim, chave_acesso, ano, cliente_id, ncm2, data_lancamento) VALUES ('$campo1', '$campo2', '$campo3', '$quantidade', '$campo5', '$valor_bruto', '$campo7', '$campo8', '$campo9_gravar', '$campo10', '$campo11', '$campo12', '$campo13', '$campo14', '$campo15', '$campo16', '$total_nfe', '$campo18', '$campo19','{ano}', '{cliente}','$campo1', '{data_lancamento}')"); //INSERE CADA LINHA } // FECHA REMOÇÃO DA LINHA EM BRANCO //} zip_entry_close($zip_entry); }  
    • Por Elisandro Vieira
      Bom dia, tenho um diretório no meu site com varias pasta onde cada uma contém arquivos, gostaria de saber como faço para que quando clicar na pasta ela já baixar em formato zip com todos os arquivos dentro.
      Segue link da raiz do meu site onde contem as pastas com os arquivos http://brasiltatico.net/cod4/usermaps/
       
      att,
      Elisandro
    • Por LuyZ
      Bom dia,
       
      Estou com um problema em mãos uma migração de servidor é necessária o meu cliente tem um servidor com SATA com uso de 200 Gigas e 800 Gigas Livres, sendo que existem muitos arquivos pequenos que é obrigatório existirem, ou seja o problema não é espaço e sim a velocidade de compressão, tentei comprimir em .tar.gz pela noite dentro e apenas consegui 2,5 Gigas como é obvio parei o processo,
       
      Assim gostaria de saber qual método em termos de rapidez deve ser usado neste caso, o servidor roda CentOS 7
    • Por Vinicius P da Silva
      Olá galera, como vocês estão?
      Sou estagiário em programação web, tenho apenas 6 meses de experiencia em php, no meu estágio, estamos fazendo um trabalho de monitoramento de rede, usando um software, Fiddler, ele me gera um zip, dentro dele tem vários arquivos que são gerados pelo programa com dados estatísticos da rede. Resumindo tudo isso, ele gera três tipos de arquivos, *.txt, *.xml, *.htm.
      Para trabalhar com eles criei scripts, que abrem o zip e leia o conteúdo dos arquivos e mandem para um banco de dados, desses três já consegui dois, txt e xml, estou preso no htm, o código padrão que uso para abrir os zips e tratar os arquivos:
      <?php if (!extension_loaded('zip')) { echo ("Seu arquivo php.ini não está habilitado para esta função!"); } $dir_origem = 'C:\Users\vinicius.psilva\Documents\Fiddler2\Captures'; //$arquivos_zip = glob($dir_origem."\*.zip") foreach (glob($dir_origem."\*.zip") as $arquivo_zip ) { echo "$arquivo_zip" . "<br>"; $zip = new ZipArchive(); if($zip ->open($arquivo_zip) == true){ echo "Aberto" . "<br/>"; $ }else{ echo "default"; return 0; } } } } } ?> Queria ajuda para poder trabalhar com o htm: Passo a passo do que terei que fazer: 1 - Juntar vários zips em uma variável, abrir eles e ler o seu conteúdo; 2 - Pegar todos os arquivo htm, fazer a leitura deles. 3 - Com regex, pegar somente o texto escolhido 4 - Mandar esses dados para um banco de dados Com os outros arquivos eu consegui, um dos scripts utilizados: function getTxt($dirOrig){ $date = date('d-m-Y'); $zip = new ZipArchive(); $arqZips = glob($dirOrig."\*.zip"); foreach($arqZips as $arqZip){ echo $arqZip.'<br/>'; $er = '/[/W/w]*monitoramento(.+)10(.+)_(.+). ?/'; preg_match($er,$arqZip); $txt_name=substr($arqZip,0); $posiçao = strpos($txt_name, "monitoramento"); $name_txt=substr($arqZip,$posiçao); //print_r() ; echo "$name_txt". "<br/>"; echo '<br/>'; $count_c = 1; echo $arqZip . '<br/>'; if ($zip -> open($arqZip) == TRUE) { //ao abrir o próximo arquivo inicializa o contador em zero $total_c=0; // pega o total de xml dentro do zip } echo '<p>'.'<h5>'."TXT Arqs *_s.txt ".'<h5/>'.'<p/>'.'<br/>'; for ($i = 0; $i < $zip->numFiles; $i++) { $filename = $zip->getNameIndex($i); if ($a1 = substr($filename,-6) == "_c.txt"){ $total_c++; } } echo 'O numero de arquivos'.': '."$total_c" . "<br>"; // Define o numero de zeros a esquerda if ($total_c<=9){ $numero_de_zeros = 1; } elseif ($total_c>=10 && $total_c<=99){ $numero_de_zeros = 2; } elseif ($total_c>=100 && $total_c<=999){ $numero_de_zeros = 3; } elseif ($total_c>=1000 && $total_c<=9999){ $numero_de_zeros = 4; } elseif ($total_c>=10000 && $total_c<=99999){ $numero_de_zeros = 5; } while ($count_c <= $total_c) { $file_arq_c = "raw/" . str_pad($count_c, $numero_de_zeros, "0", STR_PAD_LEFT). "_c.txt".'<br/>'; $file_arq_res_c = $zip->getStream($file_arq_c); if ( $file_arq_res_c ) { $texto = ''; while (!feof($file_arq_res_c)) { //realiza o teste para saber se o programa chegou ao final $linha = fgets($file_arq_res_c, 5000); // Linha responsavel por ler todas as linhas do arq e armazenar em strings dentro da variavel $texto = $texto . $linha; } echo $file_arq_c; fclose( $file_arq_res_c); if (ereg("^CONN",$texto)==true){ $connect = '/^CONNECT (?P<connect>[\S]*)/'; preg_match($connect, $texto, $matches); $connect_db = $matches ['connect']; echo "$connect_db" . "<br/>"; $host = '/[\w\W] *Host: (?P<host>[\S]*)/'; preg_match($host, $texto, $matches); $host_db = $matches ['host']; echo "$host_db" . "<br/>"; $proxy = '/[\w\W]*Proxy-Connection: (?P<Proxy_Connection>[\S]*)/'; preg_match($proxy, $texto, $matches); $proxy_db = $matches ['Proxy_Connection']; echo "$proxy_db" . "<br/>"; $user = '/[\w\W] *User-Agent: (?P<User_Agent>[\S]*)/'; preg_match($user, $texto, $matches); $user_db = $matches ['User_Agent']; echo "$user_db" . "<br/>"; $version = '/[\w\W] *Version: (?P<Version>[\S]*)/'; preg_match($version, $texto, $matches); $version_db = $matches ['Version']; echo "$version_db" . "<br/>"; $extensions = '/^[\w\W]Random: (?P<extensions>[\s]*)Ciphers:/'; preg_match($extensions, $texto, $matches); $extensions_db = $matches ['extensions']; var_dump ($extensions_db); return; return; if (mysql_query("INSERT INTO dados (id, get,nome_arq, host, accept, user_agent, referer, cookie, date) VALUES ('NULL' ,'$connect_db','$filename', '$host_db','$proxy_db','$user_db','$version_db','$extensions_db', '$date' '')")) { echo "<p>"; printf(" Row inserted : %d .\n\n\n\n", $db); echo "<br/>"; echo '<p/>'; } else { echo"<br/>"."<br/>"."Nao possivel o envio para o banco, pois foi encontrado um erro: " . "<br/>" . mysql_error().'<br/>'; } mysql_close(); } else{ $p_linha = '/[\w\W]*GET (?P<p_linha>[\S]*)/'; preg_replace($p_linha, $texto, $matches); $get_db = $matches ['p_linha']; echo "$get_db" . "<br/>"; $host = '/[\w\W]*Host: (?P<host>[\S]*)/'; preg_match($host, $texto, $matches); $host_db = $matches ['host']; $accept = '/[\w\W]*Accept: (?P<accept>[\S]*)/'; preg_match($accept, $texto, $matches); $accept_db = $matches ['accept']; $user_agent = '/[\w\W]*User-Agent: (?P<user_agent>[\S]*)/'; preg_match($user_agent, $texto, $matches); $user_agent_db = $matches ['user_agent']; $referer = '/[\w\W]*Referer: (?P<referer>[\S])*/'; preg_match($referer, $texto, $matches); $referer_db = $matches ['referer']; $cookie = '/[\w\W]*Cookie: (?P<cookie>[\s]*)/'; preg_match($cookie, $texto, $matches); $cookie_db = $matches ['cookie']; if (mysql_query("INSERT INTO dados (id, get,nome_arq, host, accept, user_agent, referer, cookie, date) VALUES ('NULL' ,'$get_db','$name_txt', '$host_db','$accept_db','$user_agent_db','$referer_db','$cookie_db', '$date' '')")) { echo "<p>"; printf(" Row inserted : %d .\n\n\n\n", $db); echo "<br/>"; echo '<p/>'; } else { echo"<br/>"."<br/>"."desiste disso " . "<br/>" . mysql_error(); } mysql_close(); } } $count_c++; echo "Fim"; echo "<br/>"; } } } } Seguindo a lógica de cima, pretendo fazer o restante. Agradeço a Ajuda
×

Informação importante

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