D2th3 3 Denunciar post Postado Outubro 9, 2008 Máquina que eu utilizo e está dando o problema Athlon XP 2000+ 32 bits Asus 7v8x-x Video GForce 5200 128MB 1GB RAM 2 HD 80MB Windows XP SP4 32 bits Apache 2 PHP 5.2.6 Outra Máquina, onde funciona Athlon XP 2200+ 32bits Asus 7v600 Video Gforce 4800 64MB 1GB RAM 2 HD 40MB Windos XP SP4 32 bits XAMPP PHP 5.2, APACHE 2.2 Porém eu já instalei o XAMPP na primeira máquina com as mesmas configuraçõe (copiei e colei os httpd.con e php.ini da segunda máquina) e continuou ocorrendo o mosmo problema. Gostaria de testa com GZIP. Tem como me ajudar fazer aquela função acima para compactar em GZIP? Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 9, 2008 Não ajudou muito... bom testa ai com gzip. Tem esta função que eu peguei no guia de referência, é só informar o primeiro parâmetro: function gzcompressfile($source, $level=false) { $dest=$source.'.gz'; $mode='wb'.$level; $error=false; if($fp_out=gzopen($dest,$mode)) { if($fp_in=fopen($source,'rb')) { while(!feof($fp_in)) { gzwrite($fp_out,fread($fp_in,1024*512)); } fclose($fp_in); } else { $error=true; } gzclose($fp_out); } else { $error=true; } if($error) { return false; } return $dest; } Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 9, 2008 Descobri algo! Ele está funcionando perfeitamente. Inclusive no PC que não estava. Observei que quando aparecer Status: 11 ele falha. Agora quero descobrir por que está dando Status 11. Mais coisas interessantes: Suspeitei do número de Arquivos que estavam sendo compactados. No final do Script echo "Arquivos: " . $zip->numFiles . "\n"; Ele apresenta: 1301 Como eu sei que esse número é inviável, inseri $i++, como abaixo: echo $i++ . ": Adding " . $nome_arq . "<br/>"; E foram exibidos 560 linha, ou seja 560 arquivos e não 1301 como o $zip->numFiles diz. Fui mais teimoso. Fui contar a Array arquivo. echo "<h1> Array Arquivos:". count($arquivos) ."</h1>"; E também exibiu 560 elementos dentro da Array. E agora? Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 9, 2008 Realmente, nem imagino. Se funciona em uma máquina, deveria funcionar em outra. Talvez seja um problema com algum software que existe em uma máquina e na outra não. Dá pra passar um perfil do software que você tem instalado nas máquinas ? Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 9, 2008 Está funcionando nas duas máquinas Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 10, 2008 Tem mais uma coisa para pensar. Funcionou, em partes. Alterei a função $pasta = "D:/basededados"; //$pasta = "bkp"; $arquivo_zip = "bkp.zip"; $arquivos = array(); $restricao = array(".","..","_notes","_mmServerScripts"); function ZiparBkp($pasta) { global $arquivos; global $restricao; $zip = new ZipArchive(); if ($in_pasta = opendir($pasta)) { while (false !== ($arq = readdir($in_pasta))) { if(!in_array($arq, $restricao) && is_file($pasta.'/'.$arq)) { //if ($arq != "." && $arq != ".." && is_file($pasta.'/'.$arq)) { $arquivos[] = $pasta.'/'.$arq; } else if (!in_array($arq, $restricao) && is_dir($pasta.'/'.$arq)) { //else if ($arq != "." && $arq != ".." && is_dir($pasta.'/'.$arq)) { ZiparBkp($pasta.'/'.$arq); } if(count($arquivos) > 100){ break; } } closedir($in_pasta); } return $arquivos; } ZiparBkp($pasta); $zip = new ZipArchive(); $zip->open($arquivo_zip, ZipArchive::CREATE); foreach ($arquivos as $nome_arq) { echo $i++ . ": Adding " . $nome_arq . "<br/>"; $zip->addFile($nome_arq,$nome_arq); } echo "<h1> Array Arquivos:". count($arquivos) ."</h1>"; echo "Arquivos: " . $zip->numFiles . "\n"; echo "Status:" . $zip->status . "\n"; $zip->close(); Acrescentei dentro do While que quando o arquivo tiver 100 pastas ele para de alimentar a Array. if(count($arquivos) > 100){ break; } ASSIM FUNCIONOU. O $zip->nunFiles ficou igual ao número de linhas e ao número de dados dentro da Array arquivo. O Status = 0 Criou o arquivo.zip com os arquivos compactados dentro dele. Agora tem que ver até que número de Array ele começa a travar. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 10, 2008 Talvez o problema não seja a quantidade de pastas, e sim nomes longos de arquivos ou pastas. Acho que alguns recursos do windows tem problemas com nomes longos, me lembro de ter lido isso em algum lugar. Observe se há algo de anormal nos arquivos que seja notado, como uma pasta com o nome muito grande, ou arquivos/pastas com 'ç', acentos, estas coisas. É importante entender porque esta limitação aconteceu. Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 10, 2008 Não tem nenhum arquivo ou pasta com acentos ou Ç ou outro caracter especial. Também não tem pastas ou arquivos com nomes muito extenso. +/- 12 caracteres é o máximo. Se compactar pasta por pasta ele faz normalmente. O problema é a trabalheira que dá ficar buscando pasta por pasta. Compartilhar este post Link para o post Compartilhar em outros sites