Jump to content


Photo

Problema Com F Open E F Write


  • Faça o login para participar
6 replies to this topic

#1 destrutorx

destrutorx

    Hell Yes!

  • Usuários
  • 175 posts
  • Sexo:Masculino
  • Localidade:Nova Iguaçu - RJ
  • Interesses:Quadrinhos, cinema, musica, programação, internet

Posted 23/02/2010, 10:35

Saudações a todos. Estou com um pequeno problema aqui...

Estou usando o script abaixo para escrever um log das ações efetuadas num sistema aqui da empresa. Ele deveria abrir um arquivo TXT e colocar o ponteiro no inicio do arquivo, escrevendo a nova linha sempre em primeiro. Contudo, não está funcionando... ou a inserção é feita no final do arquivo ou sobreescreve a primeira linha. Não estou conseguindo corrigir...

Quero que sempre insira uma linha nova com o texto no começo do arquivo sem apagar nada que esteja lá...

Será que podem me ajudar?

set_time_limit(0); //Setando tempo limite
date_default_timezone_set('America/Sao_Paulo');

function Logger($msg){

	$data = date("d/m/y");
	$hora = date("H:i:s");
	$ip = $_SERVER['REMOTE_ADDR'];
	
	//Nome do arquivo:
	$arquivo = "log/log_os.txt";
	
	//Texto a ser impresso no log:
	$texto = "[$data] > $msg \n";
	
	if (is_writable($arquivo)) {
	
		$manipular = fopen("$arquivo", "r+b");
	  
		if (fwrite($manipular, $texto) === FALSE) {
	  
			 print "O sistema não pode efetuar o registro de log.";
			 exit();
	  
		}
	  
		fclose($manipular);
	
	}
 
}


#2 MBA

MBA

    24 Horas

  • Usuários
  • 412 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:Desenvolvimento WEB

Posted 23/02/2010, 11:13

Amigo, Faça um teste.
Tente alterar isso:
$manipular = fopen("$arquivo", "r+b");

Para isso:
$manipular = fopen("$arquivo", "a+");

Se der certo, dê uma lida:
http://br.php.net/ma...ction.fopen.php

Abraços.
Mateus
Mateus Antunes
MBASistemas

#3 destrutorx

destrutorx

    Hell Yes!

  • Usuários
  • 175 posts
  • Sexo:Masculino
  • Localidade:Nova Iguaçu - RJ
  • Interesses:Quadrinhos, cinema, musica, programação, internet

Posted 23/02/2010, 12:55

Só que deste jeito ele insere no final... eu quero inserir no inicio do arquivo...

#4 MBA

MBA

    24 Horas

  • Usuários
  • 412 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:Desenvolvimento WEB

Posted 23/02/2010, 13:49

A sim.
Desculpe..
Agora que vi...

Uma maneira é você ler o arquivo antes de escrever.
Armazenar o conteúdo em uma variável e depois gravar tudo...

Bom.. Pode não ser a melhor saída mas já pode te ajudar.

Teste ai e depois de o retorno...

Abraços
Mateus Antunes
MBASistemas

#5 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 23/02/2010, 14:21

<?php

file_put_contents('teste.log', "Nova linha...\n" . @file_get_contents(
    'teste.log'));
[]’sAté mais

#6 André Manoel

André Manoel

    Doutor

  • Usuários
  • 996 posts
  • Sexo:Masculino
  • Localidade:Brasilia

Posted 23/02/2010, 14:22

Pode ser assim então:



	set_time_limit(0); //Setando tempo limite
	date_default_timezone_set('America/Sao_Paulo');
	
	function Logger($msg){
	
	        $data = date("d/m/y");
	        $hora = date("H:i:s");
	        $ip = $_SERVER['REMOTE_ADDR'];
	        
	        //Nome do arquivo:
	        $arquivo = "log/log_os.txt";
	        
	        //Texto a ser impresso no log:
	        $texto = "[$data] > $msg\r\n";
	        
	        if (is_writable($arquivo)) {
	        
	                $manipular = fopen("$arquivo", "a+");

	                //conteudo atual
	                $conteudo = file_get_contents($arquivo);
	                
	                //adicionar novo conteudo no inicio
	                $texto .= $conteudo;                
	                
	                if (fwrite($manipular, $texto) === FALSE) {
	          
	                         print "O sistema não pode efetuar o registro de log.";
	                         exit();
	          
	                }
	                
	                fclose($manipular);
	        
	        }	 
	}


Iniciando na Ajuda On line...

Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.

#7 destrutorx

destrutorx

    Hell Yes!

  • Usuários
  • 175 posts
  • Sexo:Masculino
  • Localidade:Nova Iguaçu - RJ
  • Interesses:Quadrinhos, cinema, musica, programação, internet

Posted 23/02/2010, 16:46

Obrigado Pessoal. Consegui fazer funcionar.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq