Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Praca na dużych plikach tekstowych, analiza linia po linii, jak zrobić to możliwie najmniej zasobożernie?
Avatarus
post
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 0
Dołączył: 12.12.2006
Skąd: Pszów

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


Witam
Mam projekt w którym muszę przeanalizować duże pliki txt które są wgrywane przez formularz na stronę.
Pliki trzeba analizować lina po linii.
Pliki mogą mieć nawet po kilka MB.
Jednocześnie takich analiz może zlecić kilkanaście osób.

Jak to zrobić żeby mi serwer przez to nie padł?
Jakaś skuteczna metoda?

Można np połączyć z ajaxem i czytać po 100 linii, aż do końca pliku? może jakaś inna lepsza metoda?

z góry dziękuje
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Fragment mojego tutoriala o obsłudze plików:

  1. $uchwyt = fopen($pliczek,'r');
  2. while(!feof($uchwyt)){
  3. $linia = rtrim(fgets($uchwyt));
  4. $licznik++;
  5. if($licznik>$od && $licznik<=$do){
  6. $tabliczka[] = $linia;
  7. }
  8. }
  9. fclose($uchwyt);
- pobiera do tablicy linie o numerach od-do.

Cytat
ja chce to zrobić tak że Ajaxowo będzie co parę sekund wczytywane te kilka linii z tego pliku, obrabiane, zapisywane do bazi i tak w kółko aż skończy obróbkę pliku
- no ale co konkretnie chcesz zrobić? Wrzucić tylko plik do bazy? Czy będziesz wywoływał to co kilka sekund czy od razu nie ma większego znaczenia dla wydajności.

Zakładam, że chodzi o dodanie do bazy jakś danych z pliku - dlatego najlepiej sparsować cały plik linia po linii, utworzyć nowy z interesującymi nas danymi a następnie wrzucić do bazy od razu cały plik zapytaniem LOAD DATA. Robiłem tak z plikami nawet gigabajtowymi i nie było większych problemów z pamięcią, operujesz tylko na linii pliku a import całego pliku do bazy przebiega bardzo sprawnie.

Można też cały plik od razu wrzucać do bazy, do jakiejś tabeli tymczasowej i w ten sposób go obrobić. Wszystko zależy od specyfikacji.
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: 12.10.2025 - 00:21