Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wybieranie wersów z pliku, konwersja jednostek.
Forum PHP.pl > Forum > Przedszkole
bartek12421
Witajcie.
Próbuję napisać skrypt, który miałby mierzyć transfer generowany przez serwer shoutcast.
Serwer generuje log takiej postaci:
Kod
<06/21/09@15:55:36> [source] connected from 77.253.115.59
<06/21/09@15:55:36> [source] icy-name: Unnamed Server; icy-genre:
<06/21/09@15:55:36> [source] icy-pub:0; icy-br:128; icy-url:http://www.shoutcast.com
<06/21/09@15:55:36> [source] icy-irc:#shoutcast; icy-icq:0; icy-aim:N/A
<06/21/09@15:55:42> [dest: 77.253.115.59] starting stream (UID: 1)[L: 1]{A: WinampMPEG/5.54}(P: 0)
<06/21/09@15:55:44> [dest: 77.253.115.59] connection closed (2 seconds) (UID: 1)[L: 0]{Bytes: 35857}(P: 0)
<06/21/09@15:55:44> [dest: 77.253.115.59] starting stream (UID: 2)[L: 1]{A: WinampMPEG/5.54}(P: 0)
<06/21/09@15:55:47> [dest: 77.253.115.59] connection closed (3 seconds) (UID: 2)[L: 0]{Bytes: 93530}(P: 0)
<06/21/09@15:55:48> [dest: 77.253.115.59] starting stream (UID: 3)[L: 1]{A: WinampMPEG/5.54}(P: 0)


Chciałbym wyciągnąć z logu wszystkie wpisy, w których pojawia się słowo Bytes, a następnie wybrać z nich tylko liczbę przesłanych bajtów.
Ostatnim krokiem miałaby być konwersja jednostek na GB.
Mogę liczyć na podpowiedź z Waszej strony, jak się za to zabrać?
athei
Zawartość pliku z logiem pobierz do zmiennej np:
Kod
$log = file_get_contents('log.txt');

Później za pomocą wyr.reg. wyciągnij to co Cię interesuje, np:
Kod
$suma_b=0;
preg_match_all("/{Bytes: ([0-9]+)}/", $log, $wynik, PREG_SET_ORDER);
foreach ($wynik as $val) {
    $suma_b+=$val[1];
}

Na koniec możesz wypisać sobie sumę w bajtach, zamieniać ją na GB itd
Kod
echo 'Suma w bajtach: ', $suma_b;
Wicepsik
preg_match_all" title="Zobacz w manualu PHP" target="_manual + foreach" title="Zobacz w manualu PHP" target="_manual

  1. <?php
  2. $text = '<06/21/09@15:55:36> [source] connected from 77.253.115.59
  3. <06/21/09@15:55:36> [source] icy-name: Unnamed Server; icy-genre:
  4. <06/21/09@15:55:36> [source] icy-pub:0; icy-br:128; icy-url:http://www.shoutcast.com
  5. <06/21/09@15:55:36> [source] icy-irc:#shoutcast; icy-icq:0; icy-aim:N/A
  6. <06/21/09@15:55:42> [dest: 77.253.115.59] starting stream (UID: 1)[L: 1]{A: WinampMPEG/5.54}(P: 0)
  7. <06/21/09@15:55:44> [dest: 77.253.115.59] connection closed (2 seconds) (UID: 1)[L: 0]{Bytes: 35857}(P: 0)
  8. <06/21/09@15:55:44> [dest: 77.253.115.59] starting stream (UID: 2)[L: 1]{A: WinampMPEG/5.54}(P: 0)
  9. <06/21/09@15:55:47> [dest: 77.253.115.59] connection closed (3 seconds) (UID: 2)[L: 0]{Bytes: 93530}(P: 0)
  10. <06/21/09@15:55:48> [dest: 77.253.115.59] starting stream (UID: 3)[L: 1]{A: WinampMPEG/5.54}(P: 0)';
  11.  
  12. preg_match_all('/{Bytes: ([0-9]+)}/', $text, $wynik);
  13. $bajt = 0;
  14. foreach($wynik[1] as $ile){
  15.  
  16.    $bajt = $bajt+$ile;
  17.  
  18. }
  19. echo $bajt;
  20. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.