[PHP] Resultaten van exec worden niet goed weergeven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • freyk
  • Registratie: September 2003
  • Laatst online: 16-06 07:03
Een van mijn dagtaken op mijn stagebedrijf is het controleren van backupstatus logboeken.
Elke statuslijst (.txt bestand) moet gecontroleert worden en deze samengevat worden in een controlelijst.
Omdat dit veel tijd vergt, wil ik deze taak gaan willen automatiseren.

Ik heb al een phpscriptje geschreven wat werkt met grep (van cygwin), dat draait op een lokale appache server onder een windows omgeving. (dit omdat ik daarvoor mijn redenen heb).

Met de volgende code (wat ik hier gevonden heb) laat ik grep aanroepen, hem zoeken in logjes en hem de resultaten weergeven:
code:
1
2
3
4
5
6
<?php
  exec( 'cmd /c grep -Ei "zoekwoord1|zoekwoord2" .\\logs\\logje.txt', $b);
  for ( $i=0;$i<sizeof($b);$i++ ) {
  echo htmlspecialchars(trim($b[$i]))."<br>";
  }; 
?>

Dit geeft, zonder problemen het zoekresultaat weer, maar als ik deze coderegels herhaal (met uiteraard andere zoekwoorden en ander logje) herhaalt hij steeds het zoekresultaat van de eerste zoekopdracht.

Hoe kan ik ervoor zorgen dat hij normaal de tweede opdracht pakt en deze goed weergeeft zonder de eerste resultaat weer mee te pakken?

[ Voor 17% gewijzigd door freyk op 23-05-2006 21:33 ]


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

uit de exec manual op php:
exec() will append to the end of the array. If you do not want the function to append elements, call unset() on the array before passing it to exec().

Acties:
  • 0 Henk 'm!

  • freyk
  • Registratie: September 2003
  • Laatst online: 16-06 07:03
Ok, kan je me een voorbeeldje geven?
Ben nog maar een beginner in deze taal.

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

PHP:
1
2
3
4
5
6
7
8
9
10
11
  exec( 'cmd /c grep -Ei "zoekwoord1|zoekwoord2" .\\logs\\logje.txt', $b);
  for ( $i=0;$i<sizeof($b);$i++ ) {
    echo htmlspecialchars(trim($b[$i]))."<br>";
  }; 

  unset($b);

  exec( 'cmd /c grep -Ei "zoekwoord3|zoekwoord4" .\\logs\\logje2.txt', $b);
  for ( $i=0;$i<sizeof($b);$i++ ) {
    echo htmlspecialchars(trim($b[$i]))."<br>";
  };

etc...

Acties:
  • 0 Henk 'm!

  • trinite_t
  • Registratie: Maart 2003
  • Laatst online: 12-06 14:14
gewoon
code:
1
unset($b);
aanroepen voordat je voor een tweede keer exec() aanroept. Dit zorgt ervoor dat je array eerst "verwijderd" wordt, zodat je weer met een nieuw array begint.
Je zou misschien ook eerst alles(lees alle exec commando's) aan het array kunnen toevoegen, en dan pas de uitvoer printen (hangt af van de toepassing)

The easiest way to solve a problem is just to solve it.


Acties:
  • 0 Henk 'm!

  • freyk
  • Registratie: September 2003
  • Laatst online: 16-06 07:03
Dankjulliewel voor de reacties!
Het probleem is opgelost door die "unset" regel toe te voegen aan me code! :)

[ Voor 9% gewijzigd door freyk op 23-05-2006 22:14 ]

Pagina: 1