[PHP] regels uit file lezen

Pagina: 1
Acties:

  • B2
  • Registratie: April 2000
  • Laatst online: 10-09 09:54

B2

wa' seggie?

Topicstarter
Als toevoeging op m'n klachtensysteem, ben ik bezig om logfiles van een fout-logger automatisch in de database (sql server 2000) te zetten.
Zo'n logfile wordt om het kwartier aangemaakt door een tool.
Het format:
code:
1
2
28-03-2002 14:05:00| FP_1 NO MORE LINES FOR VCCS
28-03-2002 14:07:33| CPS_2 STANDBY

Nu wil ik dus om het kwartier m'n script laten kijken naar de logfile, en er bepaalde delen uit halen per regel.
Dus bijvoorbeeld FP_1 als categorie, en de rest als storing.
Daar had ik al het volgende voor geprobeerd als test:
PHP:
1
<?while ( ! feof( $fp ) ) {  $line = fread( $fp, 17 ); //extract datum  print "Datum : $line<br>";  fseek ( $fp, 19 );  $line = fread( $fp, 5 ); //leest categorie  print "Betreft : $line<br>";  $line = fgets( $fp, 50 ); //de storing  print "Storing : $line<br><br>";  }?>

Maar nu wordt natuurlijk alleen de eerste regel uitgelezen, en ik wil dat elke regel opzich wordt uitgelezen.

Is php uberhaupt de juiste taal in dit geval? Of kan ik beter bv perl gebruiken om per kwartier eerst de data uit te lezen ofzo. (geen ervaring dus met perl).

Verwijderd

Kijk hier eens naar:
www.php.net/file
De regel opdelen kan mbv substring. Succes

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Jouw code zou goed moeten gaan hoor...

Maar opzich is dit wat netter:
PHP:
1
<?while(!feof($fp)){    $regel = fgets($fp, 1024);     doet_iets_met($regel);}function doe_iets_met($regel){    echo split("|", $regel);}?>

Etc :)
Op donderdag 28 maart 2002 14:21 schreef Grote Vos het volgende:
Kijk hier eens naar:
www.php.net/file
De regel opdelen kan mbv substring. Succes
Een logfile van enkele 100-den MB's wil je niet in een array hebben ;)

Verwijderd

Op donderdag 28 maart 2002 14:14 schreef supergrover het volgende:
Zo'n logfile wordt om het kwartier aangemaakt door een tool.
Het format:
Op donderdag 28 maart 2002 14:23 schreef ACM het volgende:
Een logfile van enkele 100-den MB's wil je niet in een array hebben ;)
Ik wil ook nog steeds zo'n geweldig idee hebben voor een website, zodat ik binnen een kwartier een log-file van enkele 100-den MB's heb :P

Verwijderd

ACM:
code:
1
split("|", $regel);
Liever explode() ...
array split (string pattern, string string [, int limit])
;)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 28 maart 2002 14:29 schreef Grote Vos het volgende:
Ik wil ook nog steeds zo'n geweldig idee hebben voor een website, zodat ik binnen een kwartier een log-file van enkele 100-den MB's heb :P
Ach, met behulp van fseek() en dergelijke kom je vrij rap door je 100MB heen hoor :)
Op donderdag 28 maart 2002 14:29 schreef Arien het volgende:
Liever explode() ...
Owja :)

* ACM gooit split en explode en implode en join steeds door elkaar.
En daarbij zijn implode en join wel aliassen voor elkaar, maar split en explode natuurlijk niet :)

  • B2
  • Registratie: April 2000
  • Laatst online: 10-09 09:54

B2

wa' seggie?

Topicstarter
Ik heb het inmiddels al met substr() gedaan, dat werkt nu goed.

Alleen heb ik nu nog 1 deel-probleem over.
Hoe ga ik het in php doen, dat om de zoveel tijd de file wordt uitgelezen.

  • xshredx
  • Registratie: Maart 2001
  • Laatst online: 23:34

xshredx

 

gewoon om het kwartier het scriptje aanroepen...(schedule - cron).
ik zou niet in php zelf proberen te prutsen om een interval van 15 minuten te implementeren, gewoon de aanroep van het scriptje om de 15 minuten 'plannen'.

  • B2
  • Registratie: April 2000
  • Laatst online: 10-09 09:54

B2

wa' seggie?

Topicstarter
Op donderdag 28 maart 2002 20:30 schreef xshredx het volgende:
gewoon om het kwartier het scriptje aanroepen...(schedule - cron).
ik zou niet in php zelf proberen te prutsen om een interval van 15 minuten te implementeren, gewoon de aanroep van het scriptje om de 15 minuten 'plannen'.
zal wel schedule worden, want het is een windows 2000 bak waar het op komt.

  • B2
  • Registratie: April 2000
  • Laatst online: 10-09 09:54

B2

wa' seggie?

Topicstarter
nope met schedule wordt niks, heb net wat uit zitten proberen.
Ik kan bij een taak geen http adres opgeven, alleen een executable.
Probeer ik Internet Explorer te runnen met de startpagina op die php page, dan runt ie hem maar 1x als Internet Explorer al active is.
Er wordt dus geen nieuw venster geopent.

Zou het niet gewoon met php kunnen?

  • _DeWie_
  • Registratie: November 2001
  • Laatst online: 10-04 16:23
Je moet met schedule ook niet het script aan roepen maar de php.exe.

Voorbeeld

C:\path naar php.exe\php.exe -q dumplog.php

Suc6
Pagina: 1