Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re[2]: header вместо error_page
в тех же логах, параметры разделены обычными пробелами
при правильном написании (webalizer например) распарсивание такого
лога занимает не на много больше времени чем выборка из строки без
поиска, т.е. тупо взять такие то байты и считать это временем, скажем
и гибкости прибавляет немерянно
а то получится FAT с длинными именами
"вот у меня есть косочек длинного имени, следующая часть лежит там-то"
On 06.12.2007, at 17:03, Евгений Васильев wrote:
Здравствуйте, Igor.
Вы писали 6 декабря 2007 г., 16:17:45:
IS> On Thu, Dec 06, 2007 at 03:27:00PM +0300, Евгений Васильев wrote:
Замечательно! вот бы еще сделать так, чтобы строки лога имели
фиксированную длину, для быстрого его чтения.
т.е уровнять параметры $user_agent $refferer $request
=)
IS> Это очень просто. Для этого нужно, чтобы клиенты пользовались
только одной
IS> версией браузера, делали бы одинаковый запрос, и делали бы его
с одного
IS> и того же сайта.
:)
А всеже, неплохо было бы иметь переменные или просто параметр
bin_log
Ну или какойнить патчик чтобы это делал, добивал строки пробелами
или
нулями до указанной длины например.
цифры в байтах, строки пробелами добивать, размеры сократятся лога
значительно, и читать проще, не загружая весь лог.
IS> С чего это они сократяться, если все запросы, User-Agent'ы и
Referer'ы
IS> будут добивать до одинаковой длины ? Какой, кстати - 1K, 2K, 16K?
Я образно, скажем чтобы считать траф мне нужно 3 параметра:
время, ip и $bytes_sent
В бинарном виде это 10 байт (если не ошибаюсь.) на 1 запись.
Мне вот сейчас нужено посчитать траффик с определенного хоста и
сгрупировать по ip. А если мой лог весит 200мб+
Как его читать то? А читать его надо каждые 5 мин.
А бинарный просто, сами же понимаете...
IS> И как это выглядит - не загружая весь лог ?
Проблема в скорости, одно дело распарсить весь лог, другое вытащить
нужные значения не загружая строки из файла.
Я жаже не представляю, сколько времени парсить лог таким способом
размером скажем в 2 гига.
Очень был бы рад, если в будующих версиях ченить подобное появится.
IS> Бинарные форматы - это зло, растираживанное Майкрософтом.
IS> Для обработки бинарного формата нужно писать специальную
программу, заточенную
IS> под этот формат, тогда как для текстовых достаточно grep/awk/
perl/etc.
Работаю с php, на нем как раз читать большие файлы быстро можно только
в таком виде как описал. А искать конец строки, разбивать строку по
параметрам это долго и накладно.
Куда проще перемещаться по длине строке и читать нужный параметр зная
где он и сколько их.
--
С уважением,
Евгений mailto:jeka@xxxxxxxxx
|