Ir para conteúdo
Fórum Script Brasil
  • 0

lendo aqruivo de log


Carlos Rocha

Pergunta

Ola pessoal,

Implementei um gerador de boletos da Caixa Economica Federal por um pacote que ela mandou pra min por email.

Tudo esta funcionando correto. Os boletos estão sendo gerados corretamente.

No pacote, a cada boleto gerado, é gravado u log com as informações do boleto.

Eu gostaria de saber com fazer para ler esse log de forma a criar uma tabela e informar os dados principais de cada boleto para o meu cliente.

No aqruivo de log, BoletoWebCaixa.log, cada linha é gravado nesse formato (exemplo pois estou terminado a implementação):

00000000000007400000000074        74,90     0,02%      2,5%23/04/201010/04/2010Carlos Rocha                            Rua çã, Nº: 55, Bairro: São         Muriaé                  MG36880000                                                                                                                                                                                                                                                Este título pode ser pago até o vencimento em qualquer agência     Caixa Econômica Federal ou bancos participantes do sistema           integrado de compensação.                                           Após o vencimento, o título só poderá ser pago nas agências da   CAIXA, e casas lotéricas.                                            O pagamento efetuado com cheque só será definitivamente             reconhecido após a liquidação do mesmo.

Grato a quem puder ajudar!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Como você disse que cada linha representa um boleto, bastaria ler linha por linha (primeiro exemplo):

http://www.php.net/manual/en/function.fgets.php

Depois de ler tudo você poderia apagar todo o conteúdo do arquivo, caso não apagasse teria que verificar se o boleto já foi enviado para a tabela.

Link para o comentário
Compartilhar em outros sites

  • 0

O arqruivo que gera os logs é este.

Fiz uma mnodificação nele. Na parte que grava os dados no .log, o autor usa a funçao fillwithcharleft e enche de espaços tornando dificil tratar os dados gravados assim.

o que eu fiz:

Tirei essa função e entre um registro e outro puz um & para poder usar usar substring com while mas não sei se é a melhor opção.;

<?

/**
 * Manipula rotinas para salvar as mensagens em arquivos de log.
 * @author      wlung
 * @since       18/06/2003
 * @version     1.0
 * (C) Opus Comunicação de Dados, 2003.
 */

/**
 * Funcao que cria diretorios de forma recursiva
 */
function mkdirs($strPath, $mode)
{
 if (is_dir($strPath)) return true;

 $pStrPath = dirname($strPath);
 if (!mkdirs($pStrPath, $mode)) return false;
return mkdir($strPath, $mode);
}


/**
 * funcao que append o a mensagem de log para arquivo de Log
 */
function printLog() {
   global $nosso_num,$num_doc,$valor,$juros_dia,$multa,$vencimento,$todayDate,$sNome,$sEndereco,
       $sCidade,$sEstado,$sCEP,$msg_compensacao,$msg_sacado,$log_path,$LOG_FILE_DEFAULT;

//É assim:     
   //se chegou ate aqui, quer dizer que foi sucesso. Registrar no arquivo de LOG
/*   $logMessage = $nosso_num . $num_doc . fillWithCharLeft($valor,' ', 13) 
    . fillWithCharLeft($juros_dia."%",' ',10) . fillWithCharLeft($multa."%",' ',10) 
    . $vencimento . $todayDate . fillWithCharRight($sNome,' ',40)
    . fillWithCharRight($sEndereco,' ',40) . fillWithCharRight($sCidade,' ',25)
    . $sEstado . str_replace ("-", "", $sCEP);
*/
//Mas, tentando assim
   $logMessage = $nosso_num . "&". $num_doc . "&". $valor . "&". 
    $juros_dia . "&". $multa  . "&". 
    $vencimento . "&". $todayDate . "&". $sNome . "&". 
    $sEndereco . "&". $sCidade . "&". 
    $sEstado . "&". str_replace ("-", "", $sCEP);    
    

   for ($i=0; $i<sizeof($msg_compensacao); $i++)
       $logMessage .= fillWithCharRight($msg_compensacao[$i]," ",60);
   for ($i=0; $i<sizeof($msg_sacado); $i++)
       $logMessage .= fillWithCharRight($msg_sacado[$i]," ",70);

   $fp = fopen ( $log_path.$LOG_FILE_DEFAULT, "a" );
   if (!$fp) error( "Erro: Não foi possível abrir arquivo de log!" );
   flock ($fp, 2); // lock exclusive
   fputs ($fp, $logMessage."\n");
   flock ($fp, 3); // unlock
   fclose($fp);
}


//criar diretorio de log
if (isset($log_path) && trim($log_path)!="") {
    if (!mkdirs($log_path,0700))
        die ("Erro: Não foi possível criar diretório de log (".$log_path.")");
}
else {
    if (!mkdirs($LOG_PATH_DEFAULT,0700))
        die ("Erro: Não foi possível criar diretório de log (".$LOG_PATH_DEFAULT.")");
    $log_path=$LOG_PATH_DEFAULT;
}

//concatenar "/" no final do nome de diretorio
if ($log_path[strlen($log_path)-1]!="/")
    $log_path .= "/";


?>

E essa tabela que me referi, não é tabela de base dados e sim um tabela html para organizar a exibição dos regitros

Link para o comentário
Compartilhar em outros sites

  • 0

Ola, resolvi assim:

<?
$ponteiro = fopen ("../../vendas/BoletoWebCaixa/log/BoletoWebCaixa.log", "r");
while (!feof ($ponteiro)) {
  $linha = fgets($ponteiro, 10000);
  $registro =  explode('&', $linha);
  $i = ??? //quantas vezes o & repete na string $linha. Com faz isso?
  for ($i=0;$i<12;$i++)
    {
      echo $registro[$i] . "<br>";        
    }
}
fclose ($ponteiro);
?>

agora, gostaria de saber quantas vezes, na string $linha, o caracter & (que estou usando para separar um registro de outro em cada linha) se repete.

A ideia é em lugar de $i, fazer $i ser a contagem de quantos & tem.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...