The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Дублирование записей access.log Apache в базе MySQL"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"Дублирование записей access.log Apache в базе MySQL" 
Сообщение от Yelena emailИскать по авторуВ закладки(ok) on 17-Май-05, 16:35  (MSK)
Подскажите, пожалуйста, как можно обрабатывать строку запроса при помощи PHP-скрипта (именно PHP) прежде, чем она будет записана в access.log.
Можно ли это сделать при помощи директив Apache?
И как сделать так, чтобы это решение работало и под Unix, и под Windows?
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Дублирование записей access.log Apache в базе MySQL" 
Сообщение от gr Искать по авторуВ закладки on 18-Май-05, 02:57  (MSK)
>Подскажите, пожалуйста, как можно обрабатывать строку запроса при помощи PHP-скрипта (именно PHP)
>прежде, чем она будет записана в access.log.
>Можно ли это сделать при помощи директив Apache?
>И как сделать так, чтобы это решение работало и под Unix, и
>под Windows

общее направление: piped log

Что-то типа CustomLog  "|/path/to/phpscript"

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

При этом можно добавить и обычный CustomLog

Читать http://httpd.apache.org/docs/logs.html#piped

что-то готовое вот http://logtomysql.sourceforge.net/

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Дублирование записей access.log Apache в базе MySQL" 
Сообщение от gr Искать по авторуВ закладки on 18-Май-05, 03:10  (MSK)
>>Подскажите, пожалуйста, как можно обрабатывать строку запроса при помощи PHP-скрипта (именно PHP)
>>прежде, чем она будет записана в access.log.
>>Можно ли это сделать при помощи директив Apache?
>>И как сделать так, чтобы это решение работало и под Unix, и
>>под Windows
>
>общее направление: piped log
>
>Что-то типа CustomLog  "|/path/to/phpscript"
>
>и строчка будет поступать на вход скрипта.
>имеется некоторое количество подводных камней, но в целом работает
>нормально на достаточно нагруженом сервере
>
>При этом можно добавить и обычный CustomLog
>
>Читать http://httpd.apache.org/docs/logs.html#piped
>
>что-то готовое вот http://logtomysql.sourceforge.net/


Что называется "ответил на поставленный вопрос"

Как я понимаю вам нужно некие данные, имеющиеся в логах писать в БД, если так, то все, что пишется в логи, доступно в php скрипте в переменных окружения. Недостающие переменные окружения легко добавить - (если например речь идет о степени сжатия mod_deflate и тд) http://httpd.apache.org/docs/env.html

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Дублирование записей access.log Apache в базе MySQL" 
Сообщение от Yelena emailИскать по авторуВ закладки(??) on 19-Май-05, 17:11  (MSK)
Спасибо за общее направление - piped log. :)

>
>Как я понимаю вам нужно некие данные, имеющиеся в логах писать в
>БД, если так, то все, что пишется в логи, доступно в
>php скрипте в переменных окружения. Недостающие переменные окружения легко добавить -
>(если например речь идет о степени сжатия mod_deflate и тд) http://httpd.apache.org/docs/env.html
>

а дальше в httpd.conf

CustomLog "| c:/php/cli/php.exe d:/site/htdocs/test.php" combined
или
CustomLog "| c:/usr/bin/perl.exe d:/site/cgi-bin/test.cgi" combined

cgi-скрипт читает строки из stdin (переменные окружения не потребуются)

примеры
PHP:
<?
$fp = fopen ("php://stdin", "r");
$fp1 = fopen ("d:/site/htdocs/test.txt", "a");
while ($line = fgets($fp))
{
  if (preg_match('/^([^ ]+) ([^ ]+) ([^ ]+) \[([^\]]+)\] "([^" ]+) ([^" ]+) ([^" ]+)" (\d+) (\d+) "([^" ]+)" "(.+)"/',  $line, $matches))
  {
    $results = print_r($matches, true);
    fputs($fp1, $results);
  }
}
fclose($fp1);
fclose($fp);
?>

Perl:
#!/usr/bin/perl

while(<STDIN>)
{
обработка строки
}

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру