![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 5 Dołączył: 30.04.2006 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam pewien problem natury szybkości działania (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Chodzi bowiem o to, iż posiadam na dysku pewien plik o wielkości ~234k i ilości ważnych dla mnie linii/wszystkich 9566/9572. W linuksie jest komenda cat (wyświetlająca zawartość pliku ) oraz grep ( wyświetlająca linie z wybranym wzorcem ) całość zajmuje maksymalnie 0.02 s ( wykonane przez exec() ) gdy załadowanie pliku do zmiennej tablicowej zajmuje skryptowi ~1.5 s + skrypt porównujący ciąg znaków 0.5-1.0 s więc całość wydłuża się do maksymalnie 2.5-3 s w zależności od obciążenia w danym momencie. Zawartość pliku to nic innego jak zapis 6 znaków a następnie nazwy firmy, przykładowo: 000000 Xerox 00026A Cocess Telecom Co. 000FCA A-jin Techline CO Dla niewtajemniczonych pierwsze 6 znaków jest to początek adresu MAC karty sieciowej ( bez odstępów typu - lub : ), i nazwa firmy która ją wyprodukowała. Oczywiście nasuwa się od razu myśl dlaczego nie zostanę przy wykonaniu polecania przez exec(); chciałbym aby skrypt działał w pełni w PHP, ale też żeby działał szybko (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Dlatego pytanie, czy może aby jest coś podobnego w PHP czego jeszcze nie znam, ale nie znam takiej zasady działania funkcji, umożliwiająca szybkie pobranie danych z pliku i porównanie z czymś zawartym w bazie danych. Z góry dziękuję i przepraszam, jeśli powtórzyłem temat, ale nie znalazłem nic podobnego do tego (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) I dla ciekawskich, może nie najlepsze rozwiązanie skryptu, ale nie chciało mi się nad tym długo myśleć (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
I to samo z wykorzystaniem systemu Linux :-)
|
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
wcale się nie dziwię, że to tyle trwa...
po pierwsze dlaczego nie ładujesz pliku od razu do tablicy poleceniem file() (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? po drugie po co używasz preg_match() (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? tam wystarczy zwykłe porównanie stringów (to ci chyba zżera najwięcej czasu)... po trzecie po co dodajesz dwukropki do adresów z pliku zamiast usunąć dwukropki z adresu MAC (duuuużo szybsze).... jak skorygujesz, na pewno nie bedzie mielić przez kilka sekund... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 13:58 |