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:
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 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%)
|
Jeżeli to ma być wyrażenie regularne to na pewno nie będzie szybkie, w swoim kodzie użyłem optymalnego przeszukiwania stringu do znalezienia w nim pierwszego wystąpienia szukanej frazy zamiast pregmatch, użyłem pętli foreach zamiast for, rtrim zamiast trim i zrezygnowałem z count, która nie wiem po co znalazła się w Twoim kodzie.
By działało szybciej proponuję porcjować to, co ma być wyszukiwane, zacząć od pliku z 1 szukanym wyrażeniem i sprawdzić jak działa i dopasować liczbę wyrażeń do możliwości serwera. Innej możliwości nie widzę. |
|
|
|
Qwer [PHP]Wyszukiwanie w pliku logu 26.12.2009, 19:46:21
Pilsener 1. To, co ma być znalezione wrzucasz do tablicy:
[... 27.12.2009, 00:51:45
Qwer feof()+fgets() użyłem teraz, wcześniej użyłem też ... 27.12.2009, 10:34:26
Qwer Dzięki za pomoc, mój skrypt już działa, błąd poleg... 27.12.2009, 19:29:36 ![]() ![]() |
|
Aktualny czas: 12.03.2026 - 18:07 |