Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2008, 13h30   #1
Membre Expert
 
Avatar de gifffftane
 
Inscription : 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
Points : 2 034
Points : 2 034
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 :
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.
__________________
Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.
gifffftane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 16h22   #2
Membre habitué
 
Inscription : juin 2004
Messages : 296
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juin 2004
Messages : 296
Points : 147
Points : 147
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.
__________________
- Blog
- stages-aikido.fr
kaboume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 19h26   #3
Membre Expert
 
Avatar de gifffftane
 
Inscription : 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
Points : 2 034
Points : 2 034
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 ?
__________________
Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.
gifffftane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 21h17   #4
Membre habitué
 
Inscription : juin 2004
Messages : 296
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juin 2004
Messages : 296
Points : 147
Points : 147
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
__________________
- Blog
- stages-aikido.fr
kaboume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 21h20   #5
Membre habitué
 
Inscription : juin 2004
Messages : 296
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juin 2004
Messages : 296
Points : 147
Points : 147
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 :
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);
}
 
}
__________________
- Blog
- stages-aikido.fr
kaboume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 21h22   #6
Membre habitué
 
Inscription : juin 2004
Messages : 296
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juin 2004
Messages : 296
Points : 147
Points : 147
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
__________________
- Blog
- stages-aikido.fr
kaboume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 21h29   #7
Membre Expert
 
Avatar de gifffftane
 
Inscription : 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
Points : 2 034
Points : 2 034
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.
__________________
Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.
gifffftane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h19.


 
 
 
 
Partenaires

Hébergement Web