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]   

> Описание: С обработкой новых строк каждые 50-100 мс.
Kolgarn
Отправлено: 23 Апреля, 2012 - 04:34:24
Post Id


Новичок


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


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




Собственно имеется файл со строками:

Цитата:
[07:07:59.503] [SomeBody {123445}:123] [Something {3213}] [Here you are] [oO Kill:0 {123df}] ()



В этот файл постоянно(порой по 5-10 строк в секунду) сторонняя программа пишет подобные строки.
Задача прочитать, обработать и выдать результат проанализировав текст.

На данный момент чтение из файла реализовано как:
PHP:
скопировать код в буфер обмена
  1.  
  2. $handle = fopen($file,'r');
  3. do
  4.         {
  5.         unset($data,$string);
  6.         $string = trim(stream_get_line($handle, 10000,"\n"));
  7.         if($string) $data = ParsString($string);
  8.         if(!empty($data)) { /* Добавляем текст */ }
  9.         if(!$string) delay($config['timeout']);
  10.         }
  11. while(true);
  12.  

Нет, оно не падает и етк. Вопрос лишь в том, что я совсем не уверен в разумности такого метода безостановочного чтения. Неужели не существует метода проверить наличия новой строки не вызывая нагрузку, которая превзойдет постоянное повторное чтение?

Пробовал с filesize, но как результат увеличение времени обработки в 10 раз, что не приемлемо.
Feof в моем случае почему-то по достижению конца единожды попросту переставал работать.

Собственно 2 вопроса:
1) Может есть более разумный способ читать данные из файла?
2) Каким образом на ваш взгляд можно удобнее и быстрее разбирать указанную строку на составляющие?

Так же заметил особенность при такой реализации - оно порой попросту пропускает последн(ие)юю строку, если одновременно много записалось.

(Отредактировано автором: 23 Апреля, 2012 - 12:29:02)

 
 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