Bonsoir,
Je log certaines informations (les adresse IP et les dates des hit) dans un fichier lorsque une page précise est visité.
Dans ma page j'ai le code suivant:
Et la fonction logIPAddress est défini comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $ToDay = date("d/m/Y"); $Hour = date("H:i:s"); $myremoteaddr = $_SERVER["REMOTE_ADDR"]; if (isset($myremoteaddr)) { logIPAddress ($myremoteaddr, $ToDay . " ". $Hour); }
C'est très simple.
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
20
21
22
23
24
25
26
27
28
29
30
31 function logIPAddress($ip, $date) { $MyOwnIP = "xxxxxxxxxxx"; // je cache mon adresse IP a vos yeux $loopbackIP = "127.0.0.1"; if ($ip =="") { return(0); } if ($ip == $MyOwnIP) { return(0); } if ($ip == $loopbackIP) { return(0); } $file = "ip.txt"; $log = $date . chr(9) . $ip ; // chr 9 = tabulation if ($idFile=fopen($file, "a+")) { fputs($idFile, chr(10) . chr(13)); fputs($idFile, chr(10) . chr(13)); fputs($idFile, $log); fputs($idFile, chr(10) . chr(13)); fputs($idFile, chr(10) . chr(13)); fclose($idFile); } }
Seulement j'ai un problème. Dans mon fichier de log j'ai des caractères inconnus (en ouvrant ce fichier avec notepad++ il semble que cela soit des caractères "NULL"). J'ai donc rajouté des tests pour savoir si l'adresse IP n'était pas vide ou corrompue, etc.
J'ai un second problème. C'est que ces caractères inconnues (des carrés lorsque je l'ouvre avec WordPad) s'écrivent en arrière dans le fichier et suppriment ou ècrassent certaines lignes. J'ai en effet observé que certaines adresses IP qui étaient logées ne l'étaient plus entre deux lectures du fichier de log. C'est pour cela que j'ai ajouté les chr(10) et char (13) en plus qui correspondent a des retours de chariot et line feed.
Je pensais avec cette technique mettre beaucoup d'espace entre chaque ligne et faire en sorte que mes lignes ne soient pas écrasées par ces caractere inconnues. Mais ca ne marche pas;
Je dois dire que mon serveur est particulièrement lent. Je ne sais pas comment sa se passe si deux utilisateurs visitent la page en question. Il y a t-il des conflit ? Je doute que cela soit ca. Est-ce que cette procédure de mise en log est "atomique" ? Il y a t-il des "sémaphores" ?
Je suis vraiment ennuyé de perdre des logs.
Si quelqu'un a une idée...
Merci d'avance.
Partager