нужна теория. чтение лога в потоке

dorfey

Guest
нужна теория. чтение лога в потоке

Задача.
написать читалку лог-файла. поддерживать постоянное соединение, если добавлен новый лог посылать его дальше на обработку.

не совсем понимаю как реализовать постоянное соединение, и отслеживание добавленных логов.

Читать нужно не с определенной периодичность, а скажем так читать файл постоянно.
 

dorfey

Guest
а можно простой вопрос - ЗАЧЕМ?
можно :)

дело в том что необходимо предоставлть отчет по трафику инта в реальном времени.
Была идея при необходимости читать весь лог и выдавать юзеру, но дело в том что лог уже сейчас гигов на 10 и продолжает расти.
+ обработка лога, тож дополнительное время уходит.

Собсна и была поставлена выше описанная задача.
 

whirlwind

TDD infected, paranoid
каких лог файлов? читалку по какому протоколу? что такое если добавлен новый лог (запись?) какое постоянное соединение (с кем?)
 

kvf77

Red Devil
dorfey

ну и нафиг тебе PHP для этого? я так понимаю, речь идет о локальном доступном тебе компе? тогда юзай спец проги, которые для этого конкретно преднозначены и не майся фигней
 

440hz

php.ru
Re: нужна теория. чтение лога в потоке

Автор оригинала: dorfey
Читать нужно не с определенной периодичность, а скажем так читать файл постоянно.
постоянно писать лог в БД и от туда делать выборки ...

p.s. а кто лог создает? чей лог парсим?
 

dorfey

Guest
kvf77
ну и нафиг тебе PHP для этого
заметь, я написал что нужна только теория. php я ессно тут использовать не буду, все будет писаться на питоне.

речь идет о локальном доступном тебе компе
именно так

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

whirlwind
каких лог файлов
сквидовский лог

новый лог (запись?)
lol долго думал?

какое постоянное соединение (с кем?)
с журналом сетевого компутера

440hz
а кто лог создает?
догадайся

чей лог парсим?
уже ответил
 

kvf77

Red Devil
dorfey

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

whirlwind

TDD infected, paranoid
Не надо лолкать. Вопрос поставлен был... мягко сказать, неполно. Я только что завершил работу над аналогичным проектом только логи апчевские загрызал. Как и в апаче так и в свкиде можно направить лог на STDIN программы. В конфиге апача это выглядит примерно так

CustomLog "| D:/server/perl/bin/perl.exe E:/project/dlmon/dlmon.pl E:/project/dlmon/dlmon.conf" dlwr_monitor

В сквиде то же самое. Если хочешь, могу дать поглядеть свою прогу. Правда она на перле.
 

dorfey

Guest
kvf77
может и могут давать все мыслимые отчеты, но мне не отчеты сейчас важны, а алгоритм работы программы. все мною перепробаванные программы не имели возможности "поддержки постоянной связи".

whirlwind
спасибо, но не нужно. я с перлом дела не имел поэтому это меня мало спасет :)
 

kvf77

Red Devil
dorfey
ну не пойму я никак - что тебе надо - отчет формируется в ту минуту, когда он тебе нужен - зачем тебе постоянное подключение?

помоему ты себе просто неправильно прелдставляешь задачу
 

whirlwind

TDD infected, paranoid
Ну а дальше там элементарно. Читаешь STDIN до посинения, парсишь и обрабатываешь поступающие записи.
 

dorfey

Guest
kvf77
задачу я себе прально представляю.
постоянное соединение нужно для того что бы читать каждую новую записанную строку и потом уже при обработке писать ее в БД. если читать весь файл когда юзер запрашивает статистику, то обрабатывается это далеко не заминуту. а если учесть что юзер не один то это есче и дополнительная нагрузка на сервер.

whirlwind
спасибо за помощь.
"читалка" уже в стадии разработки :)

-~{}~ 26.09.05 15:55:

все оказалось гораздо проще.
первый тестовый вариант реализован с помощью цикла, но без заглушки, т.е.:
PHP:
while 1:
читает и не существующие строки, но пишет в БД только те, которые: line != ""

дальше все будет переписано с использованием функций питона.
Всем огромное спасибо за помощь.
 

kvf77

Red Devil
dorfey

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

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

whirlwind

TDD infected, paranoid
нормальные парсилки логов прекрасно запоминают место, до которого они лог уже читали и вовсе не читают его каждый раз заного, так что ты всетаки не представляешь себе ситуации - а точнее просто ленишься попробовать
Не всегда подходит. Например, управление доступом реалтайм через сквид с авторизацией. Факт превышения лимита определяется почти сразу. Не во всех случаях как хотелось бы, но за то это наиболее простое решение, не требующее особых затрат на разработку. К тому же такие решения практически не нагружают систему, т.к. чтение из пайпа блокирует работу до прихода данных.
 

dorfey

Guest
нормальные парсилки логов прекрасно запоминают место, до которого они лог уже читали и вовсе не читают его каждый раз заного
а я про это и не говорил.

а точнее просто ленишься попробовать
да, я ленивый. но де такой же степени :D

но за то это наиболее простое решение, не требующее особых затрат на разработку
и этим все сказано ;)
 
Сверху