merlinus 1 Denunciar post Postado Julho 10, 2011 Estou fazendo um sistema de log, aonde vai armazernar toda a query e os sessão das atualizações, inserções e remoções do bd. A dúvida que tenho é se vai dar algum problema eu armarzenar isso no bd da mysql que usamos, não vai ficar muito sobregarregado? (tipo por dia são chutando baixo uma 200 entradas que vai ter). Por outro lado tendo em todos esses casos o sistema ter que abrir o txt e adicionar as linhas no final do documento, não vai fazer ficar muito mais lento? Compartilhar este post Link para o post Compartilhar em outros sites
UaiDowns 0 Denunciar post Postado Julho 10, 2011 Issu depende da sua Hospedagem, eu tenho um site que tem mais de 1200 logs na db e n fica leg, tu roba uma query para otimiza ela fmz falow....... Compartilhar este post Link para o post Compartilhar em outros sites
merlinus 1 Denunciar post Postado Julho 10, 2011 A hospedagem é um desktop com windows xp... não me xinguem, a impressão quemedá é que o desenvolvedor fez no pc pessoal dele de depois só colocou numa salinha com uma placa "não desligar" em fita crepe. Sobre txt, será que não dá problema se duas pessoas tentarem fazer operações ao mesmo tempo? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 10, 2011 Olá amigo, não dá problema não .. Mais eu ainda aconselho a não usar nenhum dos dois, use um xml, com atributos que você possa mapear .. <logs> <log uid="id do usuário" data="timestamp"> <message>....</message> </log> </logs> Assim você pode filtrar de várias maneiras, por usuário, data .. de acordo com o que você quiser Compartilhar este post Link para o post Compartilhar em outros sites
Deleu 0 Denunciar post Postado Julho 10, 2011 Aproveitando o tópico com o assunto... No meu caso, eu só fiz um sistema de Log de possíveis erros, como: Arquivo não encontrado, erro na execução da Query, tratamento de erros básicos, então fiz assim: <?php /** * __errorLog * Insere informações de erros no Array errorLog. * * @param String $error Mensagem de erro * @param int $errno Número do erro * @param int $errorline Linha deste arquivo que chamou a função __errorLog * @param String $errortype Tipo de erro [user | mysql | php] * @param String $errorquery Query de erro, usando quando type = mysql * */ private function __errorLog($e, $eNo, $eLine, $eFunction, $eClass, $eType, $eQuery=''){ $errorLog = array(); $errorLog['Msg'] = $e; $errorLog['No'] = $eNo; $errorLog['Line'] = $eLine; $errorLog['Function'] = $eFunction; $errorLog['Class'] = $eClass; $errorLog['Type'] = $eType; $errorLog['Query'] = $eQuery; $this->errorLog[] = $errorLog; $result = $this->insertError($errorLog); if($result){ $this->fileLog(); } }//Fim __errorLog ?> E um exemplo de uso é esse: <?php $debug = new debug_backtrace(); $this->__errorLog(parent::$mysqli->error, parent::$mysqli->errno, $debug[1]['line'], $debug[1]['function'], $debug[1]['class'] ,'MySQL', $query); ?> Essas informações vão para uma tabela no MySQL. É uma prática ruim utilizar Logs dessa forma? Quer dizer, existem muitos pontos negativos em relação ao XML? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 10, 2011 Dependendo do porte do sistema, não tem porque guardar os logs no banco de dados, e melhor guardar em um xml ou arquivo facilmente acessível. Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Julho 11, 2011 A dúvida que tenho é se vai dar algum problema eu armarzenar isso no bd da mysql que usamos, não vai ficar muito sobregarregado? (tipo por dia são chutando baixo uma 200 entradas que vai ter). Se você vai ter apenas 200 entradas por dia, você pode fazer tranquilamente no MySQL. Porém, como serão apenas dados de log talvez a melhor opção, caso você venha a ter um número muito grande de inserções, seja utilizar um banco de dados não relacional para esse armazenamento. Por outro lado tendo em todos esses casos o sistema ter que abrir o txt e adicionar as linhas no final do documento, não vai fazer ficar muito mais lento? Não se esqueça que internet é um ambiente multi-usuário e, a não ser que você implemente um sistema de semáforos, você poderá ter sérios problemas se 2 ou mais pessoas fizerem alguma ação que grave logs. Aproveitando o tópico com o assunto... @Deleu, Mesmo o problema sendo similar, evite postar uma dúvida em um tópico aberto por outro membro, isso acaba prejudicando a ajuda aos dois. Compartilhar este post Link para o post Compartilhar em outros sites
merlinus 1 Denunciar post Postado Julho 11, 2011 João -> eu pensei nesse fator do semaforo, a minha esperança era que o php fizesse isso automaticamente, tipo se requisitei para abrir um documento, ele já está aberto por outro user, standy by, foi liberado segue.... Como faço isso então?? pensei na possibilidade de um banco de dados não relacional, que eu tinha ouvido falar em um post antigo aqui do forum, mas não estou tentando fugir de instalar coisas no servidor. Andrey -> Estou estudando a documentação do xml e gostando da ideia, mas fica o problema que o joão levantou, não vai dar zebra de dois usuarios tentarem adicionar informação nele ao mesmo tempo? p.s essa historia dos avatares de vcs ficarem mudando bagunça minha memoria visual... Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Julho 11, 2011 a minha esperança era que o php fizesse isso automaticamente Uma simulação tosca: <?php function write( $name ) { $fh = fopen( 'test' , 'r+' ); for ( $i = 0 ; $i < 100 ; ++$i ) { fwrite( $fh , sprintf( "%6s[ %03d ]\n" , $name , $i ) ); } fclose( $fh ); } $pid = pcntl_fork(); if ( $pid ) { write( 'parent' ); } else { write( 'child' ); } O arquivo test, na minha máquina, ficou assim: ... child[ 059 ] child[ 060 ] child[ 061 ] child[ 062 ] child[ 063 ] child[ 064 ] child[ 065 ] child[ 066 ] child[ 067 ] parent[ 068 ] parent[ 069 ] parent[ 070 ] parent[ 071 ] parent[ 072 ] parent[ 073 ] parent[ 074 ] ... Como pode ver, dados foram perdidos quando 2 usuários tentaram gravar no mesmo arquivo. Por se tratar de um log, se a informação perdida for exatamente aquela que você precisa para depurar um incidente em uma aplicação, você passa a ter um problema maior que o original. Afinal, você tem a confiança de que logs serão gravados, enquanto a realidade é outra. pensei na possibilidade de um banco de dados não relacional, que eu tinha ouvido falar em um post antigo aqui do forum, mas não estou tentando fugir de instalar coisas no servidor. Como eu disse, se você tiver poucos registros diários, você pode gravar no MySQL sem qualquer preocupação. Compartilhar este post Link para o post Compartilhar em outros sites
merlinus 1 Denunciar post Postado Julho 11, 2011 É acho que a priori vou planejar o log emcima do mysql mesmo. Mas só para estudos, se fosse fazer usar um banco de dados não relacional, qual você recomendaria? Existe algum que posso usar pelo pdo?? Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Julho 11, 2011 se fosse fazer usar um banco de dados não relacional, qual você recomendaria? Para gravação de logs, o MongoDB ou qualquer um orientado a documentos é adequado. Veja: NoSQL :seta: Instalando MongoDB no Linux :seta: Instalando MongoDB no Windows :seta: Instalei o MongoDB e agora ? Existe algum que posso usar pelo pdo?? Com PDO não tem. Compartilhar este post Link para o post Compartilhar em outros sites
merlinus 1 Denunciar post Postado Julho 11, 2011 Perfeito, com isso já tenho bastante material para trabalhar no projeto. MUITISSIMO obrigad, vcs conseguiram responder todas as duvidas sobre o assunto, pode colocar como resolvido. Compartilhar este post Link para o post Compartilhar em outros sites