Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyszukiwanie w pliku logu
Qwer
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 15.09.2009

Ostrzeżenie: (0%)
-----


Witam,

mam plik logu pewnej gry, przykładowa linijka wygląda tak:
[30 Nov 11:53:09] PARTY [Caelldfssion] jakiś tam tekst

no i mam takie pliki utworzone przez siebie:
dictionary.txt (słownik) o przykładowej zawartości:
.*kur.* (na razie jeden wyraz)

oraz channels.txt (schematy kanałów do przeglądania) i przykładowej zawartości:
^\[.. ... ..:..:..\] PARTY \[.*\]
^\[.. ... ..:..:..\] ALL [\[.*\]
^\[.. ... ..:..:..\] ALLIANCE \[.*\]
^\[.. ... ..:..:..\] TRADE \[.*\]
^\[.. ... ..:..:..\] HERO_VOICE \[.*\]

i teraz sedno problemu... stworzyłem skrypt, który niestety nie działa i bardzo obciąża sprzęt bo wyszukuje w 30MB pliku (około 400000 linijek) i dla każdej jest odpowiednia ilość kombinacji wyszukiwania, dla w/w plików jest to 5^1 kombinacji (5), skrypt wygląda tak jak kod poniżej, jeżeli ktoś ma pomysł jak to dobrze rozwiązać aby działało i nie obciążało aż tak sprzętu to prosiłbym o pomoc

skrypt:
  1. <?php
  2. $channels=file('channels.txt');
  3. $dictionary=file('dictionary.txt');
  4. $file=fopen('chat.log', 'r');
  5. $search;
  6. $founded;
  7. $k=0;
  8.  
  9. for ($i=0; $i<sizeof($channels); $i++){
  10. for ($j=0; $j<sizeof($dictionary); $j++){
  11. $search[$k]=trim($channels[$i])." ".trim($dictionary[$j]);
  12. $k++;
  13. }
  14. }
  15.  
  16.  
  17. while(!feof($file)){
  18. $row=fgets($file);
  19. for($i=0; $i<sizeof($search); $i++){
  20. if (preg_match("/$search[$i]/i", $row)){
  21. if (sizeof($founded) != 0){
  22. $founded[sizeof($founded)+1]=$row;
  23. } else {
  24. $founded[0]=$row;
  25. }
  26. }
  27. }
  28.  
  29. }
  30.  
  31. for($i=0; $i<sizeof($founded); $i++){
  32. echo $founded[$i]."<br>";
  33. }
  34. ?>

wcześniej wczytałem cały 30MB plik do tablicy funkcją file() i nie było to dobre rozwiązanie, także obciążało, stąd chciałem przesiąść się na to, ale jak widać nieskutecznie.
W kodzie mogą być drobne błędy jednak całość powinna być w miarę dobrze zrozumiana. Z góry dziękuję za pomoc.

Ten post edytował Qwer 26.12.2009, 19:49:09
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 07:57