The OpenNET Project / Index page

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

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

"Перегон логов в mysql" 
Сообщение от 1 emailИскать по авторуВ закладки(??) on 20-Апр-05, 05:48  (MSK)
ожалуйста помогите отредактировать php скрипт для перегонки логов squid в mysql

(изначально был он написан для MSSQL)

Проблема в том что он ничего не делает с mysql и
не создает таблицы и ничего в них не заносит!


--------------------------------------------------------------------------

<?

//устанавливаем соединение с базой

$host="localhost";
$user="root";
$passwd="123456";
$db_name="traffics";

//имя таблицы текущего месяца
$table_name_tek="q".date("Y_m");


//заносим данные из access.log в базу

error_reporting (E_ERROR);

function getadr($url)
{
$nachalo=strpos($url,"//")+2;
$str=substr($url,$nachalo);
$konec=strpos($str,"/");
$str=substr($str,0,$konec);
return $str;
}

function getstringparlog($str,&$masiv)
{
$mas=explode(" ",$str);
$j=0;
for ($i=0;$i<=count($mas);$i++)
  {
   if ($mas[$i] != "")
    {
     $masiv[$j]=$mas[$i];
     $j++;
    }
  }
}

$filename="/var/log/squid/access.log.1";   //имя файла лога сквида

$mysql=mysql_connect($host,$user,$passwd);
if ($mysql==false) echo "False connect DB\n";
$res=mysql_select_db($db_name);
if ($res==false) echo "False select table\n";

//проверяем есть ли таблица за текущий месяц, если нет - создаём


$res = mysql_query("SELECT name FROM dbo.sysobjects");
$gr = mysql_num_rows($res);
$check_table=0;
for ($i = 0; $i < $gr; $i++)
{
if (mysql_result($res,$i,0) == $table_name_tek)
  {
   $check_table=1;
  }  
}  

if ($check_table==0)
{
   $query="create table $table_name_tek (
     num int IDENTITY,
     username char(20),
     ip char(16),
     podr char(20),
     data int,
     time int,
     byte bigint,
     url char(255),
    )";
//
   $res=mysql_query($query);
   if ($res==false) {echo "False Create Table $table_name_tek\n";}

   $query="CREATE  UNIQUE  INDEX indexStat1 ON $table_name_tek
   (num, username, ip, podr, data, byte, url)";
   $res=mysql_query($query);
   if ($res==false) {echo "False Create Index $table_name_tek\n";}
}


//заносим данные в базу

$table_name=$table_name_tek;

$file=fopen($filename,"r");
while (feof($file)==false)
{
  $text=fgets($file,1000);
  getstringparlog($text,$masiv);

//проверяем был ли допущен бзер в инет
  if (strtolower($masiv[3])!='tcp_denied')
   {
//проверяем есть юзер в списке подразделений
//ищем файлы подразделений и проверяем есть ли в них юзер
    $dir=opendir($dir_podr);
    while ($file_podr=readdir($dir))
     {
//читаем файл подразделения и ищем в нём имя юзера
      if (($file_podr==".") or ($file_podr=="..")) {continue;}
      $file_podr_h=fopen($dir_podr."/".$file_podr,"r");
      while (feof($file_podr_h)==false)
       {
        $podr_user=fgets($file_podr_h,1000);
        if (strtolower($masiv[7])."\n"==$podr_user)
         {
//заносим данные юзера в базу
          $date_time=explode(":",date("Y:m:d:H:i",$masiv[0]));
          $data=$date_time[0].$date_time[1].$date_time[2];
          $time=$date_time[3].$date_time[4];
          $user=$masiv[7];
          $ip=$masiv[2];
          $byte=$masiv[4];
          $url=getadr($masiv[6]);
          $query="insert into $table_name (username,ip,podr,data,time,byte,url) values ('$user','$ip', '$file_podr',$data, $time,'$byte','$url')";
//echo $query;
//exit;
          $res=mysql_query($query);
          if ($res==false) echo "False\n";
         }
       }
     }
    closedir($dir);
   }

}
fclose($file);


?>
--------------------------------------------------------------------------

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

 Оглавление

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

1. "Перегон логов в mysql" 
Сообщение от ALex_hha Искать по авторуВ закладки(??) on 20-Апр-05, 10:22  (MSK)
Так может не стоит выдумывать велосипед, а использовать squid2mysql?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


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

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




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

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