Парсер аксесс логов PERL (Огромные файлы)
Нужно сделать, парсер который бы делал следующее:
В аксесс логах строчки запросов к нашему серверу, каждый запрос имеет параметр mag_did то есть индентификатор партнера.
В каждой строчки, есть параметр mag_ua - USER agent, я предоставлю список USER agent которых считать за ботов, и не считать по ним стату
В разреше каждого партнера мне надо пропарсить фаил и собрать следующую инфу
[Ключ партнера] =>
array(
[Ключ файла] =>
array(
'mag_sait_www' => Из переменной mag_durl=http://yandex.ru/file.phpdfsd Вытаскиваете название домена
'num_view' => 'Количество просмотров, просто сумма записей с mag_did отбросив ботов'
'ip' => 'Вот он: 127.0.0.1 - - [26/Jan/2010:01:45:00 +0300] "GET /partner/dealer.php?mag_durl=index.php&mag_did=1653&''
Предлагаю следующие параметры, описывать в конфиге в виде параметров которые должны быть найдены в строчках:
'num_in_cart=> 'Количество заходов в корзину, в ссылке должно msnm magaz=cart
'num_make_orders' = > 'В запросе чтобы был magaz=agree''
[Ключ products]=>array (По каждому mag_prodid посчитаться Количество просмотров)
[Ключ seo] => array (Ключ из файла бана ботов => Количество)
)
);
То есть пример лога:
127.0.0.1 - - [26/Jan/2010:01:45:30 +0300] "GET /partner/dealer.php?mag_durl=index.php&mag_did=5318&mag_version=101&magaz=info&mag_prodid=11945&mag_ua=Xap+Spider+Bot+2.0 HTTP/1.0" 200 127
127.0.0.1 - - [26/Jan/2010:01:45:30 +0300] "GET /partner/html/ver2/sales.php?url=index.php&col=2&man= HTTP/1.0" 200 -
127.0.0.1 - - [26/Jan/2010:01:45:30 +0300] "GET /partner/title.php?magaz=info&mag_prodid=1043&mag_model=P700 HTTP/1.0" 200 311
Я в конфиге пишу
script_stat=array('dealer.php', 'sales.php', 'title'.php)
И для каждого файла опишу настройки, какие собирать параметры (Те ключи которые я описал выше num_view итд)
То есть неапример для файла dealer.php - мне надо всю статус собрать, то есть все параметры что описал выше
Для sales.php только num_view
После распарсивания, фаил удаляется, а записи заносяться в базу:
а) Проверяете есть ли такой сайт в базе по выташеному боту
mag_sait_www
select * from affiliate_sites where affiliate_site='mag_sait_www'
Если нету делаете insert
insert into affiliate_sites(id
affiliate_id
name
affiliate_site
tick)
values
(
'',
mag_did,
Домен выташенный,
Домен выташенный,
3
)
После встапвки записи, делаем insert или update в таблицу affiliate_statistics
http://static.sotmarket.ru/screen/seva/20100128-uhr-144kb.jpg
insert если нету записей с date=Дата парсиньтя
update если есть
ICQ 997544