D2th3 3 Denunciar post Postado Outubro 6, 2008 Amigos, Tem fazer uma função de Backup. Me parecer estar totalmente correta pois ele executou um procedimento na pasta em que eu estava e listou os arquivos e criou o ZIP. Abri o arquivo zip e estava lá tudo certinho. Porém quando fui tentar com um arquivo maior, a função correu certo, listou todos os arquivos de pastas e subpastas mas não gerou o arquivo ZIP, creio eu que pelo tamanho. Gostaria de saber se é algo que tenho que alterar no PHP.ini ou no APACHE. Pois realmente ele não cria o arquivo quando tem um tamanho maior (nem é muita coisa - 8MB). Fiz a função usando Copy e funcionou direitinho, só não está zipado. Como devo proceder? Obrigado a todos. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 6, 2008 Tanta aumentar a quantidade de memória que um script pode consumir: memory_limit = 24M Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 7, 2008 Fui verificar essa questão no php.ini e já estava assim: max_execution_time = 120 ; Maximum execution time of each script, in seconds max_input_time = 120 ; Maximum amount of time each script may spend parsing request data ;max_input_nesting_level = 64 ; Maximum input variable nesting level memory_limit = 128M ; Maximum amount of memory a script may consume (128MB) Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 7, 2008 A execução do script demora mais que 2 minutos ? Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 8, 2008 Não chega a isso, porém se eu quizer compactar uma banco de dados que eu tenho de aproximadamente 100 Megas é possível que esbarre nesse tempo. Tem alguma solução para o meu caso? Ainda não consigo compactar um arquivo de 8MB com função ZIP do php 5.2.6. Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Outubro 8, 2008 Porque nao aumenta entao? max_execution_time = 120 ; Maximum execution time of each script, in seconds Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 8, 2008 Porque não há anecessidade de aumentar mais o que isso. Minhas perguntas: O problema que está ocorrendo está no tempo de execução do scrip? Por que estamos debatendo isso? O arquivo de 8MB leva poco mais de 25 segundos para terminar de listar na tela para mim, com isso já estaria compactado. Mas não está fazendo. Eu gostaria de saber se é alguma restrição ou limitação do PHP.INI ou do APACHE. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 8, 2008 As únicas limitações que eu conheço pra execução de um script é o tempo de execução e o máximo de recurso (memoria) que o mesmo vai consumir. Se estes dois já estão autos, ai complica. O tamanho do arquivo não representa a quantidade de memória que será consumida, esta provavelmente será muitas vezes maior que o seu arquivo de 8 mega. Se já está com 128 mega, coloca 512 só pra desencargo de consciência, pra ter certeza de que não está faltando memória pro processo. E tem mais, alguns hosts não permitem a alteração de determinados valores no php.ini. O script deveria exibir um erro, mas parece que este não apareceu. Então, coloque no início do script: ini_set('display_errors', 'On'); error_reporting(E_ALL); Isto deve apresentar alguma novidade. Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 8, 2008 Essas configurações no PHP.ini já está habilitadas. Estou fazendo isso em um Host local, com Apache 2 e PHP 5.2.6 em minha máquina. Executei novamente a função. Ela lista todos os arquivos dentro de todas as pastas mas não cria o arquivo zip. Porém se eu executo a mesma função em uma pasta de tamnho equivalente uns 10Kb ele cria o arquivo zip com os arquivos desta pasta dentro. Então por favor, verifique a função: $pasta = "D:/bancodedados/"; $arquivo_zip = 'sql.zip'; $arquivos = array(); function ZiparBkp($pasta) { global $arquivos; if ($in_pasta = opendir($pasta)) { while (false !== ($arq = readdir($in_pasta))) { if ($arq != "." && $arq != ".." && is_file($pasta.'/'.$arq)) { $arquivos[] = $pasta.'/'.$arq; } else if ($arq != "." && $arq != ".." && is_dir($pasta.'/'.$arq)) { ZiparBkp($pasta.'/'.$arq); } } closedir($in_pasta); } return $arquivos; } ZiparBkp($pasta); $zip = new ZipArchive(); $zip->open($arquivo_zip, ZipArchive::CREATE); foreach ($arquivos as $nome_arq) { echo "Adding " . $nome_arq . "<br/>"; $zip->addFile($nome_arq,$nome_arq); } echo "Arquivos: " . $zip->numFiles . "\n"; echo "Status:" . $zip->status . "\n"; $zip->close(); Só funciona com arquivos bem pequenos. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 8, 2008 Antes de mais nada, faça a reportagem de erros como eu sugeri acima. Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 8, 2008 Não reporta erro. Nada. A função exibe os arquivos que "supostamente" estão sendo compactados. Tudo funciona normalmente, menos aparecer erro. e criar o arquivo ZIP. Isso quando o arquivo é maior que, sei lá, 1 MB. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 8, 2008 Aqui no meu servidor rolou legal. É um Linux Ubuntu. Meu php.ini está com as configurações default (memory_limit com 24mb). Veja o script que utilizei, na verdade é o seu script, onde apenas mudei a pasta que será compactada: <?php //$pasta = "D:/bancodedados/"; // diretório com 9 mega de arquivos $pasta = $_SERVER['DOCUMENT_ROOT'] . '/' . dirname($_SERVER['PHP_SELF']) . '/servers/'; $arquivo_zip = 'sql.zip'; $arquivos = array(); function ZiparBkp($pasta) { global $arquivos; if ($in_pasta = opendir($pasta)) { while (false !== ($arq = readdir($in_pasta))) { if ($arq != "." && $arq != ".." && is_file($pasta.'/'.$arq)) { $arquivos[] = $pasta.'/'.$arq; } else if ($arq != "." && $arq != ".." && is_dir($pasta.'/'.$arq)) { ZiparBkp($pasta.'/'.$arq); } } closedir($in_pasta); } return $arquivos; } ZiparBkp($pasta); $zip = new ZipArchive(); $zip->open($arquivo_zip, ZipArchive::CREATE); foreach ($arquivos as $nome_arq) { echo "Adding " . $nome_arq . "<br/>"; $zip->addFile($nome_arq,$nome_arq); } echo "Arquivos: " . $zip->numFiles . "\n"; echo "Status:" . $zip->status . "\n"; $zip->close(); Então, imagino que o problema seja com a sua plataforma. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 8, 2008 Observação: a máquina tem 256 de ram e é um pentium 3 de 800 megaherts, a operação não levou nem 1 segundo. Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 8, 2008 Fui testar aqui para verifica qual era o tamanho máximo da pasta para ele inserir o zip. E ele cria o arquivo ZIP e compacta pasta de até 1,08 MB. Mais do que isso não cria arquivo zipe e consequentemente não compacta arquivos. Minha plataforma: WinXP Apache 2 PHP 5.2.6 Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 8, 2008 Testa em outro servidor. Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 8, 2008 INTERESSANTE. Segui sua recomendação. Instalei um XAMPP for Windows em outra máquina. Apache 2.2 PHP 5.2.5 E a função funcionou perfeitamente com um arquivo de aproximadamente 52MB. O que sugere que eu faça para igualar minha instalação manual a funcionar como no XAMPP, pois não tenho interesse em instalar o XAMPP no outro PC onde não funciona a função. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 9, 2008 A hipótese de ser o hardware é nula, pois o servidor onde testei é bem fraquinho. Bom, comece comparando o php.ini dos dois. Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 9, 2008 Estou comparando o PHP.ini. Verifico uma questão. A extensãoes: extension=php_mbstring.dll extension=php_exif.dll extension=php_mcrypt.dll Estão dando erro. Elas não estavam habilitadas e quando habilitei o Apache não iniciou dando um erro que não encontrou as extensões na pasta c:\php\ext Com isso para inicial o PHP tenho que desabilitar essas extensões. Isso pode influenciar? Como faço para essas extensões funcionarem? Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Outubro 9, 2008 VAI ENTENDER Na minha saga para compactar uma pasta, desinstalei o Apache e o PHP da minha máquina e instalei o XAMPP como está na outra máquina. Quando testei na outra ele executou com perfeição, compactou uma pasta lotada de arquivos e subpastas com 51 MB. Porém, na minha máquina o mesmo XAMPP, a mesma configuração, o mesmo tudo. E le continua fazendo arquivos pequenos e arquivos maiores não cria o ZIP. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 9, 2008 HUmm... vamos investigar então. Qual a configuração (hardware) das duas máquinas ? Não esqueça de dizer se são 32 ou 64 bits. Compartilhar este post Link para o post Compartilhar em outros sites