IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Log dans un fichier


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut Log dans un fichier
    Bonjour,

    À chaque sollicitation d'une page web, je dois enregistrer dans un log des infos de connexion.

    Pour l'instant à chaque connexion de la page j'ouvre le fichier, je lui mets les logs, et je referme le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $flog = fopen("./log.csv", 'a');
    fwrite($flog, $_SERVER['REMOTE_ADDR'] . ";" . gethostbyaddr($_SERVER['REMOTE_ADDR']) . "\n");
    fclose($flog);
    ?>
    Je me dis que cette façon de procéder est peut être lourde ? Ne serait-il pas mieux d'ouvrir une seule fois le fichier pour toutes les connexions, mais je ne sais pas comment la chose est possible, ni même si elle est souhaitable, car c'est peut être optimisé en interne ?

    Merci pour vos lumières.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Par défaut
    hello,

    Je te conseille de regarer ci qui a été fait dans Zend_Log du Zend Framework plus particulièrement la classe : Zend_Log_Writer_Stream.

    http://framework.zend.com/manual/fr/zend.log.html

    En clair instanciation objet et dans le construct ouverture du fichier en mode a. Puis à chaque fois fwrite dedans.

    Sinon tu peux te faire un singleton.

  3. #3
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Ahem je suis un GRAND DEBUTANT dans le domaine php en tous cas.

    Au départ j'aimerais utiliser PHP sans bibliothèque externe, pour me former à minima.

    Tout ça pour te dire que je n'ai pas la compétence pour comprendre ce qui se fait chez les autres, et que, si tu pouvais me donner plus de détails niveau 0... je n'ai pas vu "instantiation objet" dans la FAQ PHP, ni singleton...

    Et surtout, est-ce que une optimisation serait vraiment utile dans mon contexte ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Par défaut
    Hello,

    Ok je te conseille de créer un objet représentant ta classe de Log.

    Le constructeur de cet objet s'occuperait de faire l'ouverture du fichier en mode ajout (a).

    Ta classe aurait une méthode write($message) qui elle écrirait dans le fichier.

    Le destructeur de ta classe fermerait le fichier.

    Un truc du genre :
    [code]
    class Log

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Par défaut
    Hello,

    Ok je te conseille de créer un objet représentant ta classe de Log.

    Le constructeur de cet objet s'occuperait de faire l'ouverture du fichier en mode ajout (a).

    Ta classe aurait une méthode write($message) qui elle écrirait dans le fichier.

    Le destructeur de ta classe fermerait le fichier.

    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    class Log {
     
    private $_filename;
    private $_fp;
    public function __construct(){
      $this->_fp = fopen($this->_filename);
    }
     
     
    prublic function write($message) {
      fwrite($this->_fp,$message...
    }
     
    public function __destruct() {
     fclose($this->_fp);
    }
     
    }

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Par défaut
    Je reviens sur ton message initial.

    Si effectivement tu n'écris qu'une fois dans le fichier à l'affichage de la page, ta méthode suffit largement. Ma méthode n'est utile que si tu écris à plusieurs reprises dans ta page php et donc pour éviter d'ouvir et de refermer sans cesse ton pointeur de fichier.

    Donc oublie ce que je t'ai dit

  7. #7
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Mais non, cela m'a permis de voir pour la première fois un objet PHP

    Mais, effectivement, je n'en ai besoin qu'une fois dans ma page ; à chaque fois que la page est publiée, le log se fait, mais c'est tout.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/12/2010, 10h03
  2. log dans différents fichiers suivant même EVENT
    Par colombero dans le forum Logging
    Réponses: 2
    Dernier message: 12/03/2010, 13h54
  3. Réponses: 1
    Dernier message: 08/01/2010, 10h55
  4. Renvoi des logs dans un fichier
    Par Trebor dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 01/09/2009, 19h39
  5. Sortie du log dans un fichier
    Par F2S dans le forum Logging
    Réponses: 2
    Dernier message: 24/11/2007, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo