Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Чтение последней строки из текстового файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
uray
Отправлено: 08 Февраля, 2013 - 08:41:09
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Каждый час формируется TXT файл с метеоданными и ложится в папку

Никак не пойму как считать именно последнюю строку из этого файла для последующего вывода пользователям

2013-02/2013-02-08.txt

CODE (text):
скопировать код в буфер обмена
  1. 2013-02-08 04:10:24,30,19,28.3,86,-4.4,1023.3,1.7,2.7,2,27.0,0
  2. 2013-02-08 04:40:24,30,18,28.3,85,-3.9,1023.3,0.3,1.0,5,27.0,0
  3. 2013-02-08 05:10:24,30,18,28.4,85,-3.4,1023.4,1.0,2.0,2,27.0,0
  4. 2013-02-08 05:40:24,30,19,28.5,83,-3.0,1023.6,0.3,1.4,14,27.0,0
  5. 2013-02-08 06:10:25,30,21,28.8,82,-2.6,1023.9,0.7,1.4,0,27.0,0



PHP:
скопировать код в буфер обмена
  1. <?
  2. # выбираем файл последнего дня
  3. $filename = ("/server/test.dom14.com/weather/data/raw/").(date("Y")).("/").(date("Y-m")).("/") .(date("Y-m-d")).(".txt");
  4.  
  5. $f = fopen("$filename","r");
  6.  
  7. while (!feof($f))
  8. {
  9.    $outString=fgets($f);
  10.            $arrT = explode(",",fgets($f));
  11.            echo "Дата: " . $arrT[0] ." Температура " . $arrT[5] . " Скорость ветра " . $arrT[8] . "м/с",  "<br>";
  12. }
  13.  
  14. fclose($f);
  15. ?>

(Отредактировано автором: 08 Февраля, 2013 - 08:45:41)

 
 Top
DelphinPRO
Отправлено: 08 Февраля, 2013 - 08:50:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. $filename = ("/server/test.dom14.com/weather/data/raw/").(date("Y")).("/").(date("Y-m")).("/") .(date("Y-m-d")).(".txt");
  2.  
  3. $c = file($filename);
  4. $d = array_pop($c);
  5.  
  6. $arrT = explode(",",$d);
  7. echo "Дата: " . $arrT[0] ." Температура " . $arrT[5] . " Скорость ветра " . $arrT[8] . "м/с",  "<br>";


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
thesameson
Отправлено: 08 Февраля, 2013 - 08:52:17
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Окт. 2012  


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. if(file_exists($filename) && is_readable($filename)){
  3.         $array = file($filename);
  4.         $last_elem = count($array)-1;
  5.         echo $array[ $last_elem ];
  6. }
  7.  

DelphinPRO
И правда, так проще

(Отредактировано автором: 08 Февраля, 2013 - 08:53:51)

 
 Top
uray
Отправлено: 08 Февраля, 2013 - 09:13:59
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Спасибо большое!
 
 Top
DelphinPRO
Отправлено: 08 Февраля, 2013 - 10:27:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




thesameson пишет:
И правда, так проще

разумеется. В первую очередь нужно посмотреть нет ли стандартной функции для решения задачи, а уже потом придумывать свои алгоритмы. В данном случае - один вызов array_pop.

Правда, следует учитывать, что файл будет считываться полностью в память. Гиговые файлы так открывать не следует Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Stierus Супермодератор
Отправлено: 08 Февраля, 2013 - 11:29:01
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Скрипт, который описан выше, копирует ВЕСЬ файл в массив (представляем, что происходит при работе с большими файлами), потом берет лишь последний элемент огромного массива.

Как это делают обычно:

Если файлы не сильно большие - не заморачиваться, а в цикле получаем содержимое файла построчно (http://www.php.net/manual/en/function.fgets.php) все непоследние строки пропускаем, последнюю оставляем. Чем это лучше вышеописанного варианта? - тем, что нет огромного массива с содержанием всего файла, а есть лишь переменная, содержащая лишь одну строчку из файла


Если файл сильно большой - вам поможет функция http://www.php.net/manual/en/function.fseek.php ... в комментариях много полезного, например http://www.php.net/manual/en/fun...fseek.php#106336
Что делает этот код? Смотрит размер файла, перемещает указатель в самый конец и в цикле посимвольно идет к началу, пока не натыкается на перевод строки. То, что между концом файла и первым переводом строки - это и есть последняя строка, но в обратном порядке.
(Добавление)
Что бы обратную строку перевести к нормальному виду - используйте http://www.php.net/manual/en/function.strrev.php
 
My status
 Top
EuGen Администратор
Отправлено: 08 Февраля, 2013 - 11:33:10
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




А для ленивых есть shell_exec + tail


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
uray
Отправлено: 08 Февраля, 2013 - 21:55:39
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Ребяты всем спасибо, конечный результат ясен и понятно куда копать!
Далее думаю еще с столкнусь с проблемами и сразу отпишусь в другой теме Улыбка
Темку можно закрывать Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB