За последние 24 часа нас посетили 18928 программистов и 1607 роботов. Сейчас ищут 1017 программистов ...

Помогите немного доработать скрипт мониторинга файлов сайта

Тема в разделе "PHP для новичков", создана пользователем Front, 23 ноя 2011.

  1. Front

    Front Активный пользователь

    С нами с:
    3 апр 2008
    Сообщения:
    5
    Симпатии:
    0
    Вот такой скрипт, все отлично, мониторит, на почту удобный результат со ссылками приходит, но...
    все портит куча файлов кэша, вот таких:
    cache_94afbfb2f291e0bf253fcf222e9d238e_08968af04fc5a564ed2ebba60b9be5be
    cache_7e65fe3e7f7c0341759408c8cae125a9_a91a77d39ebb296054ffa1e1b6713ace
    и т.п.
    все начинаются на "cache_", изза этой кучи кракозябров читать репорты практически невозможно и всякое желание пропадает.

    Полный код скрипта:

    PHP:
    1. <?php
    2.   ///////////////////////////////////////////////////////////////////////////
    3.   //    Файл-чекер  -  автоматический мониториг изменений файлов сайта     //
    4.   //                                                                       //
    5.   //                     Воробьев Денис, 2005-2007                         //                       //
    6.   //                                                                       //
    7.   //          FileChecker 2.1 by Denvor [url=http://denvor.ru]http://denvor.ru[/url]                   //
    8.   ///////////////////////////////////////////////////////////////////////////
    9.   // Введите адрес (или адреса) электронной почты, куда будет отправляться уведомление
    10.   //  $to = "pupkin@mail.ru, [email=popkin@mail.ru]popkin@mail.ru[/email]";
    11.   $to = "";
    12.   //Введите тему присылаемого письма
    13.   $subj = "";
    14.   // от кого письмо
    15.   $from = "";
    16.   // URL сайта (для формирования ссылки на новые файлы)
    17.   $url = "";
    18.  
    19.   //введите имя файла, в котором будет хранится список каталогов
    20.   // ВНИМАНИЕ! на некоторых хостингах (РБК) требуется прописать ПОЛНЫЙ путь к файлу от корня
    21.   // например, /www/domen/users/sub-domen/www/htdocs/list
    22.   $listfile = "";
    23.  
    24. // введите список файлов, изменения которых не нужно отслеживать
    25.   GLOBAL $no_check,$total_size,$files,$folders;
    26.   $no_check = array("list_port", "filepos", "Tree", "history", "ini");
    27.  
    28.  // корневая директория сайта
    29.   $root_dir = "";
    30.  
    31.  
    32.  
    33.   ///////////////////////////////////////////////////////////////////////////
    34.   //Все, дальше ничего менять не нужно  /////////////////////////////////////
    35.   ///////////////////////////////////////////////////////////////////////////
    36.  
    37.   $total_size = $files = $folders = 0;
    38.   $dir = opendir ($root_dir);
    39.   scan_dir($root_dir);
    40.  
    41.   function scan_dir($dirname)
    42.    {
    43.       GLOBAL $arr;
    44.                $dir = opendir($dirname);
    45.                 while (($file = readdir($dir)) !== false)
    46.     {
    47.      if($file != "." && $file != "..")
    48.       {
    49.        if(is_file($dirname."/".$file))
    50.         {
    51.           if (!in_array($file, $GLOBALS['no_check']))
    52.           $arr[] = str_replace($root_dir,"../",$dirname)."/".$file." - ".date("m.d.y H:i:s",filemtime($dirname."/".$file))." - ".filesize($dirname."/".$file);
    53.           $GLOBALS['files']++;
    54.           $GLOBALS['total_size']+= filesize($dirname."/".$file);
    55.  
    56.         }
    57.        if(is_dir($dirname."/".$file))
    58.         {
    59.             $arr[] = $dirname."/".$file;
    60.             $GLOBALS['folders']++;
    61.             scan_dir($dirname."/".$file);
    62.          }
    63.       }
    64.     }
    65.    closedir($dir);
    66.   }
    67.  
    68.  
    69.  $list = fopen($listfile, "r+");
    70.  if ($list AND filesize($listfile)> 0)
    71.   {
    72.      $file = fopen($listfile,"r");
    73.      $bufer = fread($file,filesize($listfile));
    74.        fclose($file);
    75.      $arr1 = unserialize($bufer);
    76.      $arr2 = array_diff ($arr, $arr1);
    77.      $arr3 = array_diff ($arr1, $arr);
    78.     if ((count ($arr2) + count ($arr3)) ==0)
    79.     {
    80.       if ($id ==1) echo " Изменений файлов со времени последнего  сканирования не обнаружено!<br>";
    81.      }
    82.     else
    83.     {
    84.       $mess1 = " ====== Новые файлы и новые параметры файлов: ====== <br>\n";
    85.      if ($id ==1) $mess1.="<br>";
    86.      foreach($arr2 as $val)
    87.       {
    88.         $val1 = substr ($val, 1);
    89.         if (substr($val1,0,1)==".") $val1=substr($val1,1);
    90.         if (substr($val1,0,1)==".") $val1=substr($val1,1);
    91.         $val1 = str_replace($root_dir, "", $val);
    92.         $val1 = "<a href=$url$val1 target=_blank>".$val1."</a><br>";
    93.         $mess1 =  $mess1."$val1 \n";
    94.       }
    95.       $mess2 = "<br>\n\n ====== Удаленные файлы и старые параметры файлов: ====== <br>\n";
    96.       foreach($arr3 as $val)
    97.       {
    98.         $mess2 =  $mess2."$val <br>\n";
    99.       }
    100.       $mess = $mess1.$mess2;
    101.       if (((1024*1024) > $total_size) && ($total_size > 1024)) $size = (round($total_size /1024))."K";
    102.       else if ($total_size > (1024*1024)) $size = (round($total_size / 1024 /1024))."M";
    103.       $mess.= "== \nОбщий обьем  файлов: $size ($total_size байт), всего файлов: $files,папок: $folders ==";
    104.       if ($id == 1) echo $mess;
    105.       $subj =convert_cyr_string (stripslashes($subj),w,k);
    106.       $headers = "MIME-Version: 1.0\n";
    107.       $headers .= "From: $from\n";
    108.       $headers .="Content-type: text/html; charset=windows-1251";
    109.       mail ($to, $subj, $mess, $headers);
    110.       $str = serialize($arr);
    111.       $file = fopen($listfile,"w");
    112.       fwrite($file,$str);
    113.       fclose($file);
    114.     }
    115.   }
    116.  else
    117.   {
    118.     $str = serialize($arr);
    119.     $file = fopen($listfile,"w");
    120.     fwrite($file,$str);
    121.     fclose($file);
    122.   }
    123. ?>
    Интересует вот это место, как правильно задать маску файлов, чтобы исключить весь кэш из мониторинга,
    а еще вопрос - можно ли добавить в исключение целую директорию?

    PHP:
    1.  
    2. // введите список файлов, изменения которых не нужно отслеживать
    3. GLOBAL $no_check,$total_size,$files,$folders;
    4. $no_check = array("list_port", "filepos", "Tree", "history", "ini");
    5.  
    Выручайте плиз, какой-то нехороший чел уже раза три лил нам шелл, а потом ворох говноссылок, а так как времени нет каждый день следить, то всякий раз замечал слишком поздно, логи стерты, никак не могу его отследить как он заходит.