Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] pobieranie danych z pliku, czy takie rozwiązanie jest optymalne?
lukash82
post
Post #1





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Witam,

Mam pewien plik na serwerze, który co minutę jest nadpisywany nowym wierszem danych ze stacji pogodowej. Muszę wybrać z tego pliku ostatni wiersz i przedstawić parę danych z wybranego ostatniego wiersza. Pytanie tylko, czy to co napisałem jest w miarę optymalne i nie będzie zbytnio zamulać strony... Plik txt waży od 300 do 550 kb, zależnie od pory dnia.

  1. $plik = file('plik.txt');
  2. $tmp1 = count($plik);
  3. $ostatnia = $plik[$tmp1-1];
  4. $spacje_out = explode(" ", $ostatnia);
  5. $tmp2 = count($spacje_out);


Jak widać, filozofii wielkiej tu nie ma. Ostatnie dwie linijki rozdzielają mi wybrany wiersz wg spacji, między którymi zapisywane są dane do pliku. Chodzi głównie o to, czy taka forma obróbki pliku o takiej objętości jest optymalna... Dzięki z góry za opinie, pozdr.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


hmmm no to kiepsko. A czy masz możliwość edycji kodu zapisywania tych danych? Jeśli byś miał to oprócz normalnego dopisywania do pliku, o którym wspominałeś, mógłbyś dodać zaraz po tym zapisanie do nowego pliku (nadpisując go - tak by zawsze miał jedną linię z najnowszymi danymi) - wtedy tylko ten plik odczytujesz i po sprawie.

Jeśli nie masz takiej opcji to proponuję:

  1.  
  2. $maxLineSize = 12345; // dlugosc maksymalnej linii z nadkładką (1,5 razy itp.)
  3. $size = filesize('plik.txt','r');
  4. $file = fopen('plik.txt');
  5. fseek($file,$size - $maxLineSize);
  6. $line = fgets($file, $maxLineSize);
  7. fclose($file);
  8. $data = end(explode("\n",$file));
  9.  
  10. echo $data;


Albo jakoś tak (IMG:style_emoticons/default/smile.gif)

EDIT: to jedynie idea - trzeba by ją zabezpieczyć np przed tym że rozmiar pliku jest mniejszy od $maxLineSize itd. itp. (IMG:style_emoticons/default/smile.gif)

Ten post edytował Sephirus 11.12.2012, 12:47:37
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: 9.10.2025 - 19:34