Ir para conteúdo

POWERED BY:

Arquivado

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

schumacker

[Resolvido] Ler aquivo TXT com 10 MB

Recommended Posts

Olá galera,

 

 

Seguinte... o código abaixo funciona perfeitamente quando tento fazer a importação de um arquivo pequeno.

 

 

ini_set("memory_limit","500M");
		ini_set("max_execution_time", 60000);
		ini_set("display_errors", 1);
		set_time_limit(60000);


		$ponteiro = fopen($_FILES["arquivo"]["tmp_name"], "r");
		
		while(!feof($ponteiro)) 
		{
			$linha = fgets($ponteiro);
			
			$arrDados[] = trim(substr($linha, 221, 200));

			ob_flush();
			flush();			
		}

 

Mas quando tento executar com um arquivo TXT que tem 10MB, não funciona!!!

 

Daí, aparece a seguinte tela e nada faz:

 

Warning: feof(): supplied argument is not a valid stream resource 20;
Warning: fgets(): supplied argument is not a valid stream resource 22;

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ini_set('max_input_nesting_level',999);
max_input_nesting_level

Define a profundidade máxima aninhada de variáveis de entrada (i.e. $_GET, $_POST..)

E uploads de arquivos.

 

 

Tenta ae =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim:

 

ini_set("memory_limit","500M");
set_time_limit(0);


$arquivo = fopen($_FILES["arquivo"]["tmp_name"], "r");


$n_linhas = 0;

while ($linha_atual = fgets($arquivo)){
$n_linhas++;
$linha[] = $linha_atual;
}
print_r($linha);
echo "<br /><hr/><br/>".$n_linhas;

fclose($arquivo);

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim:

 

ini_set("memory_limit","500M");
set_time_limit(0);


$arquivo = fopen($_FILES["arquivo"]["tmp_name"], "r");


$n_linhas = 0;

while ($linha_atual = fgets($arquivo)){
$n_linhas++;
$linha[] = $linha_atual;
}
print_r($linha);
echo "<br /><hr/><br/>".$n_linhas;

fclose($arquivo);

 

Tentei esse código, só para testar, e não funcionou.

 

 

 

 

Warning: fgets(): supplied argument is not a valid stream resource in G:\TESTES\exportar2.php on line 15

Notice: Undefined variable: linha in G:\TESTES\exportar2.php on line 20

0

Warning: fclose(): supplied argument is not a valid stream resource in G:\TESTES\exportar2.php on line 23

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse erro é sobre o arquivo...

 

coloca o arquivo em uma pasta e informa o caminho direto para ele ...

 

dese modo ai você tem que fazer o upload do arquivo antes

$_FILES["arquivo"]["tmp_name"]

 

 

modifique

$arquivo = fopen($_FILES["arquivo"]["tmp_name"], "r");

 

para:

$arquivo = fopen("c:\\caminho\\arquivo_txt.txt", "r");

 

ai coloca caminho absoluto do arquivo so para testar

 

eu uso dessa maneira para dar carga em um banco de dados apartir de arquivos txt e funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, tenta aumentar o tamanho do 'upload_max_filesize' do PHP, o padrão é 8mb.

 

Tenta assim:

 

<?php
ini_set("upload_max_filesize","500M");
ini_set("post_max_size","500M");
ini_set("memory_limit","500M");

set_time_limit(0);

$handle = @fopen("arquivo.txt", "r");
if ($handle) {
	while (!feof($handle)) {
		$buffer = fgets($handle, 4096);
		echo $buffer;
	}
	fclose($handle);
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi o problema.

 

Não sei por que, setando diretamente no código essas variáveis de sistema não funcionou a minha leitura do TXT:

 

ini_set("max_execution_time", 60000);
ini_set('max_input_nesting_level', 60000);
ini_set('max_input_time', 60000);
ini_set('post_max_size', "20M");
ini_set('upload_max_filesize', "20M");

 

Mas quando fiz a mesma configuração diretamente no PHP.INI, aí sim meu código anterior funcionou e consigui fazer a leitura do TXT de mais de 10MB.

 

Bom, se precisaria configurar todas essas variáveis eu não sei. Só se que depois que mudei no PHP.INI tudo voltou a funcionar corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

algumas configurações do PHP não estão disponiveis para serem alteradas em runtime, podendo somente serem alteradas direto no php.ini.

Como por exemplo "upload_max_filesize" e "post_max_size".

 

@braços e fique com Deus!

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.