[PHP] plantage analyse d'un fichier log, fichier trop gros ? ! ?

plantage analyse d'un fichier log, fichier trop gros ? ! ? [PHP] - PHP - Programmation

Marsh Posté le 18-06-2003 à 15:01:29    

J'ai écrit un petit script qui permet d'analyser un fichier de log,
mais ce script plante dès que le ficiher est trop gros.
Le voici :

Code :
  1. <?
  2. $fichier=fopen("trans.log", "r" );
  3. $contenu=fread($fichier, filesize("idtrans.log" ));
  4. $tableau = preg_split ("/(?=\n)/", $contenu);
  5. $nb_lignes = count ($tableau)-1;
  6. $i=$nb_lignes;
  7. while ( $i > 0 ) {
  8.         if( strstr($tableau[$i],"TRANSFERT DBF 2 MYSQL" )==true)       
  9.         {
  10.                 $j=$i-10;
  11.                 print "Date du dernier transfert $j: $tableau[$j] <br><br>";
  12.                 $i=0;
  13.         }
  14.         $i--;
  15. }
  16. ?>


 
J'utilise ce script surt un fichier de 12000 lignes,
et ça ne pose pas de problèmes.
Lorsque je lance ce script sur un fichier de 85000 lignes,
ça plante.
 
......je devrais tester les codes d'erreurs,
mais comme je suis nouveau en PHP,
je vais perdre plein du temps à chercher sur internet,
alors que mon erreur est peut-être évidente.


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
Reply

Marsh Posté le 18-06-2003 à 15:01:29   

Reply

Marsh Posté le 18-06-2003 à 15:38:56    

Problème résolu,
il y a une limite de mémoire par défaut,
en augmentant cette limite,
j'ai pu lire le fichier :
 

Code :
  1. ini_set("memory_limit","40M" );


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
Reply

Marsh Posté le 18-06-2003 à 15:44:15    

Euh...
 
T'est obligé de tout lire d'un coup ???
 
Parceque là ça me semble bourrin ton truc...
 
Imagine le jour où ton site fait 10 000 hits par jours (ce qui n'est pas énorme, surtout s'il y a un forum ou autre contenu dynamique)
 
Ben si tu analyses le log du mois, ça te fait 310 000 lignes...
 
A raison de 200 caractères par ligne en moyenne, ça te fait quand même un superbe fichier de 62 Mo
 
Deplus, manipuler un tableau pareil ensuite, chais pas ce que tu veux faire dedans, mais ça me semble assez lourd...

Reply

Marsh Posté le 18-06-2003 à 15:44:55    

C'est bien crados ce que tu fais !
Pour ton traitement, une lecture ligne par ligne du fichier est suffisante non ?
Pas besoin de stocker l'intégralité du fichier en mémoire, 2 fois en plus !
 [:grilled]


Message édité par Mara's dad le 18-06-2003 à 15:45:22

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 18-06-2003 à 17:26:43    

Non, je suis d'accord,
mais ça fonctionne, et j'ai fait ça assez vite.
Mais à part la taille du fichier,
je le parcourt assez vite puisque je commence par la fin,
mon but est de trouver la dernière occurence d'un texte.
Dès que je trouve ce texte, je remonte de quelques lignes, et j'ai la date que je cherche.
 
Maintenant l'idéal serait de lire le fichier ligne par ligne en commençant par la fin,
et dès que j'ai la ligne qu'il me faut,
j'arrête,
mais en PHP je sais pas faire ça (je pourrais, mais je sais pas)
demandez de le faire en C, pas de problème.
 
Donc si quelqu'un veut me pondre ce script (petit en plus j'en suis persuadé).....


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed