Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] odczytanie części pliku
Demoneos
post
Post #1





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 26.02.2008

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


W jaki najoptymalniejszy sposób można by było odczytać część pliku tekstowego? Załóżmy, że plik ma 5000 linijek. Ja chcę odczytać linijki od 1000 do 1200.
Mógłbym np. przesunąć wskaźnik na 1000 linię, a następnie odczytać w pętli (w każdej iteracji jedną linię) te 200 lini. Może są jakieś lepsze rozwiązania?


--------------------
Go to the top of the page
+Quote Post
ViX
post
Post #2





Grupa: Zarejestrowani
Postów: 114
Pomógł: 9
Dołączył: 19.11.2007
Skąd: Kraków

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


Nie baw sie w pliki tylko zrob to na bazie danych
Szybciej, wygodniej i bez wiekszych problemow


--------------------
Poszukujący wiedzy
Go to the top of the page
+Quote Post
elemek
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 24
Dołączył: 14.08.2008

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


Cytat(Demoneos @ 21.08.2008, 12:48:08 ) *
W jaki najoptymalniejszy sposób można by było odczytać część pliku tekstowego? Załóżmy, że plik ma 5000 linijek. Ja chcę odczytać linijki od 1000 do 1200.
Mógłbym np. przesunąć wskaźnik na 1000 linię, a następnie odczytać w pętli (w każdej iteracji jedną linię) te 200 lini. Może są jakieś lepsze rozwiązania?


Jeżeli chodzi o tak małe pliki jak 5000 (powiedzmy do 1MB) linijek tekstu najprościej i wbrew pozorom najefektywniej będzie wczytać całość (z tego względu że odczyty z dysku i tak są buforowane wiec faktycznie mały plik i tak zostanie wczytany w całości do bufora systemu)

  1. <?php
  2. /**
  3.  * Funkcja zwraca wskazane linie tekstu
  4.  *
  5.  * @param string $file_name nazwa pliku
  6.  * @param int $lines_from numer pierwszej lini do wczytania (numerowane od 1)
  7.  * @param int $lines_to numer ostatniej lini
  8.  * @return array tablica indeksowana oryginalnymi numerami lini.
  9.  */
  10. function getLines($file_name, $lines_from, $lines_to) {
  11. '/^.*$/m',
  12. file_get_contents($file_name),
  13. $lines,
  14. PREG_SET_ORDER
  15. );
  16. for ($i = $lines_from-1; $i < $lines_to; $i++) {
  17. $result[$i+1] = $lines[$i][0];
  18. }
  19. return $result;
  20. }
  21. ?>


--------------------
Rzecz trudną rozbijam na kilka łatwiejszych :)
Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 03:37