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

PHP & Base de données Discussion :

probleme d'analyseur de fichier .log


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut probleme d'analyseur de fichier .log
    Bonjour sous le cadre de mon PFE je doit developper une application web ( php) qui va analyser le fichier log de squid ( nommé acess.log) extraire le contenu nécessaire pour la supervision de l'accès internet et le mettre dans une BD mysql puis analyser le contenu de la page visiter et générer automatiquement une alert (ajout d'une alerte a la table alert ) , voila le code :


    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <?
     
    require_once("../conf/conf.php");
     
    $fichier="access2.log";\\ le fichier a analyser
     
    //**** extraire le contenu nécessaire*******
     
    $do = fopen ($fichier, "r");
    $contenu = fread ($do, filesize ($fichier));
     
    $ligne = explode("\n", $contenu);
    $infoavant="vide";
    for ($i = 0; $i < (count($ligne)-1); $i++) {
    $info = split("[ ]+", $ligne[$i]);
     
    $infocourant=$info[2];
     
    if($infocourant!==$infoavant)
     
    {
    $date= $info[0];
    $adresse= $info[2];
    $http= $info[6];
    $dateheur=date('d-m-Y H:i:s',$date);
    $info2 = split("/", $http);
    $url=$info2[2];
    echo $http;
     
    /* -------Analyse du contenu  ----------*/
    $j=0;
    $resultat="";
    $trouve=0;
    //****************** recuperation des mot clé a recherché de la table keyword*********
     
    $req2="SELECT * FROM `keyword`";
    $data2=mysql_query($req2);   
     
       while($res2=mysql_fetch_array($data2))
    {
    //*************** analyse du page web visité*************************
    $fichierr = fopen($http,"r");
    while (!feof ($fichierr))
    {
    $donnees = strtolower(strip_tags(fgets($fichierr, 4096)));
    $pos = strpos($donnees, $res2["mot"]);
    if ($pos>0) $trouve=1;
    }//fin de la boucle
    if ($trouve==1)
    {
    $resultat.=$res2["mot"] ;
    $i++;
    }
    fclose($fichier);
    $trouve=0;
    }
     
     
     
     
           $sql="INSERT INTO `fichierlog` (`datevisite`, `adresseclub`, `adresseurl`,`urlvisited`,`keyword`) VALUES ('$dateheur', '$adresse', '$url','$http','$resultat');";
    $resut= mysql_query($sql);
    echo $sql;
     
     
    }
     
    $infoavant=$info[2];
    }
    header("Location:alertgenerator.php?); // redirection a la page alerte qui va générer des alerte selon le contenu de la table fichierlog
    ?>
    le problème c'est que le scripte tourne dans un boucle infinie et ne donnne plus de résultats , pouvez vous m'aider a resoudre se probleme ou si vous avez des proposition pour d'autre algorithme

    Exemlpe du fichier log a analyser

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 74
    Par défaut
    Citation Envoyé par SUBARUu Voir le message
    le problème c'est que le scripte tourne dans un boucle infinie
    La quelle ?
    (sans indentation pas evident de lire le code)

    Sinon pourquoi incrémenter 2 fois ton $i (a 2 endroit different de ton code)? C'est normal (j'ai pas regardé plus en profondeur sans l'indentation c chiant )?

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut
    Citation Envoyé par Freyja Voir le message
    La quelle ?
    (sans indentation pas evident de lire le code)

    Sinon pourquoi incrémenter 2 fois ton $i (a 2 endroit different de ton code)? C'est normal (j'ai pas regardé plus en profondeur sans l'indentation c chiant )?
    just pour signaler que $fichier et la variable de l'adresse du fichier log et $fichierr est la variable qui contient l'adresse de la page visité ( extraction de cette adresse du fichier log ) donc je doit ouvrir la premiere boucle jusqu'a la fin du fichier log et pour chaque ligne du fichier log j'ouvre une boucle jusqu'& la fin du $fichierr qui va analyser le contenu ( trouver l'occurence des motclée déja sauvgardé dans la base de donné donc un autre boucle pour chaque motclé ) vous voyez 3 boucles successive , je pense qu'il y'a ne faute dans l'algorithme , vous avez une idée d'un autre algorithme qui permet d'analyser le contenu d'un fichier log et le contenu de chaque page visitée ?

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 74
    Par défaut
    euh...

    Et ma question sur le $i alors ?? dsl c'est peut etre normal mais sur le coup j'ai trouvé ca étrange...
    Dans une boucle tu incrémente le $i, et dans ton autre boucle (for) tu l'incremente encore...
    A premiere vue, je ne vois pas l'utilité de l'incrementer...

    Apres je peux me tromper, j'ai du mal a lire un code sans une bonne indentation (et un minimum de commentaire)

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut
    Citation Envoyé par Freyja Voir le message
    euh...

    Et ma question sur le $i alors ?? dsl c'est peut etre normal mais sur le coup j'ai trouvé ca étrange...
    Dans une boucle tu incrémente le $i, et dans ton autre boucle (for) tu l'incremente encore...
    A premiere vue, je ne vois pas l'utilité de l'incrementer...

    Apres je peux me tromper, j'ai du mal a lire un code sans une bonne indentation (et un minimum de commentaire)
    vous avez raison alors voila j'ai changer un peus le code pour découper le processus , donc j'ai créer une page php nommé analyseur web , qui va analyser le contenu d'une page web pour trouver l'occurrence des mot clée stockeé dans la table " keyword" et ajouter les mot clée trouvé dans la table "fichierlog", voila le Code :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <?
     
    require_once("../conf/conf.php");
     
    // ouverture de la table "fichier log et selection des url qui n'ont pas étai verifié
     
     
     $req="SELECT * FROM `fichierlog` WHERE `flag`=0";
             $data=mysql_query($req);         
             while($res=mysql_fetch_array($data))
     
    {
     
    // ouverture de la table "keyword" pour selectionné les mot clée de test 
     
     
    $req2="SELECT * FROM `keyword`";
    $data2=mysql_query($req2);         
     
             while($res2=mysql_fetch_array($data2))
    {
     
     
    $resultat="";// la variable qui va contenir les mot clé trouvées 
     
    $fichier=$res["urlvisited"];// l'adresse url du fichier a analyser 
     
    // ouverture du fichier en mode "r" 
     
    $do = fopen ($fichier, "r");
    $contenu = fread ($do, filesize ($fichier));
     
    $ligne   = explode("\n", $contenu); // lecture du fichier ligne par ligne
    for ($i = 0; $i < (count($ligne)-1); $i++) 
     
     
    {
    $info = split("[ ]+", $ligne[$i]);// lecture de la ligne mot par mot en depassant le caractère espace 
     
    $infocourant=0;
     
    while ($ligne)// le test de la comparaison des mot commence 
       {
    $var1 = $res2["mot"];
    $var2 = $info["$infocourant"];
    if (strcasecmp($var1, $var2) == 0)
          {
             $resultat.=" ".$res2["mot"] ;// ajout du mot trouvé dans la variable $resultat 
          }
             $infocourant=0;
       }
     
    }
    fclose($fichier);
    }
     
    // mettre ajour la table "fichierlog" on ajoutant les mot trouvés et en mettant la valeur du flag =1 qui prouve que l'url est analysé
     
    $idivisit=$res["idvisite"];
    $requp="UPDATE `fichierlog` SET `keyword` = '$resultat', `flag` = '1' WHERE `idvisite` = '$idivisit' ";
    $dataup=mysql_query($req2);
    }
    ?>

    le probleme qu'il renvoi une erreur :
    Warning: filesize(): Stat failed for http://127.0.0.1/Ayman/lire_fichier.php (errno=2 - No such file or directory) in d:\program files\easyphp1-8\www\superviseur\dev\log\analyseurweb.php on line 25

    Warning: fread(): Length parameter must be greater than 0. in d:\program files\easyphp1-8\www\superviseur\dev\log\analyseurweb.php on line 25 ..


    donc vous voyez bien que le probleme reside dans la récupération du taille du fichier a analyser , alors es que vous avez une solution , merci bcp de votre aide

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Par défaut
    Warning: filesize(): Stat failed for http://127.0.0.1/Ayman/lire_fichier.php (errno=2 - No such file or directory) in d:\program files\easyphp1-8\www\superviseur\dev\log\analyseurweb.php on line 25
    à vu de nez "No such file or directory" signifie qu'il ne trouve pas le fichier
    et donc forcément filesize ne renvoit rien donc 0...


    Warning: fread(): Length parameter must be greater than 0. in d:\program files\easyphp1-8\www\superviseur\dev\log\analyseurweb.php on line 25 ..
    Le "Length parameter must be greater than 0" signifie que la longueur doit être plus grande que 0...

    or comme précédement il a pas trouvé le fichier il a renvoyé 0 en longueur et donc ici ça ne marche pas...

    et si tu testes l'existence du fichier $fichier ça te donne quoi?

Discussions similaires

  1. Problemes pour tronquer un fichier de Log
    Par toxycyty dans le forum Administration
    Réponses: 2
    Dernier message: 08/07/2009, 16h45
  2. probleme de fichier log corrompu - Ora-00314
    Par sanomory dans le forum Oracle
    Réponses: 2
    Dernier message: 14/02/2008, 09h58
  3. probleme fichier log du squid
    Par nizar_insat dans le forum Réseau
    Réponses: 4
    Dernier message: 05/11/2007, 00h38
  4. ajout erreur fichier log dans la boite Problems d'eclipse
    Par alister dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 07/08/2007, 09h34
  5. analyseur fichier .log
    Par shintoisme dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 21/06/2006, 21h27

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