Есть сканер Код (Text): <?php /////////////////////////////////////////////////////////////////////////// // Файл-чекер - автоматический мониториг изменений файлов сайта // // // // Воробьев Денис, 2005-2007 // // // // // FileChecker 2.1 by Denvor http://denvor.ru // /////////////////////////////////////////////////////////////////////////// // Введите адрес (или адреса) электронной почты, куда будет отправляться уведомление // $to = "pupkin@mail.ru, popkin@mail.ru"; $to = "mail"; //Введите тему присылаемого письма $subj = "tema"; // от кого письмо $from = "support"; // URL сайта (для формирования ссылки на новые файлы) $url = "url"; //введите имя файла, в котором будет хранится список каталогов // ВНИМАНИЕ! на некоторых хостингах (РБК) требуется прописать ПОЛНЫЙ путь к файлу от корня // например, /www/domen/users/sub-domen/www/htdocs/list $listfile = "/home/.../public_html/log.csv"; // записываем в файл новые файлы $list_file = "/home/.../public_html/list_files.csv"; // введите список файлов, изменения которых не нужно отслеживать GLOBAL $no_check,$total_size,$files,$folders; $no_check = array("list_port", "filepos", "Tree", "history", "ini"); // корневая директория сайта $root_dir = "/home/.../public_html/uploads"; /////////////////////////////////////////////////////////////////////////// //Все, дальше ничего менять не нужно ///////////////////////////////////// /////////////////////////////////////////////////////////////////////////// $total_size = $files = $folders = 0; $dir = opendir ($root_dir); scan_dir($root_dir); function scan_dir($dirname) { GLOBAL $arr; $dir = opendir($dirname); while (($file = readdir($dir)) !== false) { if($file != "." && $file != "..") { if(is_file($dirname."/".$file)) { if (!in_array($file, $GLOBALS['no_check'])) $arr[] = str_replace($root_dir,"../",$dirname)."/".$file." - ".date("m.d.y H:i:s",filemtime($dirname."/".$file))." - ".filesize($dirname."/".$file); $GLOBALS['files']++; $GLOBALS['total_size']+= filesize($dirname."/".$file); } if(is_dir($dirname."/".$file)) { $arr[] = $dirname."/".$file; $GLOBALS['folders']++; scan_dir($dirname."/".$file); } } } closedir($dir); } $list = fopen($listfile, "r+"); if ($list AND filesize($listfile)> 0) { $file = fopen($listfile,"r"); $bufer = fread($file,filesize($listfile)); fclose($file); $arr1 = unserialize($bufer); $arr2 = array_diff ($arr, $arr1); $arr3 = array_diff ($arr1, $arr); if ((count ($arr2) + count ($arr3)) ==0) { if ($id ==1) echo " Изменений файлов со времени последнего сканирования не обнаружено!<br>"; } else { $mess1 = " ====== Новые файлы и новые параметры файлов: ====== <br>\n"; if ($id ==1) $mess1.="<br>"; foreach($arr2 as $val) { $list_links = $val; $val1 = substr ($val, 1); if (substr($val1,0,1)==".") $val1=substr($val1,1); if (substr($val1,0,1)==".") $val1=substr($val1,1); $val1 = str_replace($root_dir, "", $val); $val2 = str_replace($root_dir, "", $val); $val1 = "<a href=$url$val1 target=_blank>".$val1."</a><br>"; $mess1 = $mess1."$val1 \n"; $links .= $list_links ."\n"; } $mess2 = "<br>\n\n ====== Удаленные файлы и старые параметры файлов: ====== <br>\n"; foreach($arr3 as $val) { $mess2 = $mess2."$val <br>\n"; } $mess = $mess1.$mess2; if (((1024*1024) > $total_size) && ($total_size > 1024)) $size = (round($total_size /1024))."K"; else if ($total_size > (1024*1024)) $size = (round($total_size / 1024 /1024))."M"; $mess.= "== \nОбщий обьем файлов: $size ($total_size байт), всего файлов: $files,папок: $folders =="; if ($id == 1) echo $mess; $subj =convert_cyr_string (stripslashes($subj),w,k); $headers = "MIME-Version: 1.0\n"; $headers .= "From: $from\n"; $headers .="Content-type: text/html; charset=windows-1251"; mail ($to, $subj, $mess, $headers); $str = serialize($arr); $file = fopen($listfile,"w"); fwrite($file,$str); fclose($file); $file_list_links = fopen($list_file,"w"); fwrite($file_list_links,$links); fclose($file_list_links); } } else { $str = serialize($arr); $file = fopen($listfile,"w"); fwrite($file,$str); fclose($file); } ?> Проблема в то что в директории нужно сканировать не все папки а только три В файл list_files.csv записываю новые файлы с момента последнего сканирования, организация папок в директории /uploads/ /log/ /file/ /avatar/ /images/ /thumb/ /smile/ Нужно чтобы сканер сканировал только эти папки Код (Text): /file/ /images/ /thumb/ Пробовал сам, никак не получается. Создавал переменную $root_dir с массивом директорий, foreach пробегался по всем директория указанным в массиве и что то не получалось, потом вобще запутался ))) Help!!!
наверное вот это scan_dir($root_dir); заменить на что-то типа $dirs = ваш список; foreach( $dirs as $d ){ scan_dir( $d ); }
хм, странно, я так и делал, но что то не работало, сейчас повторно сделал и все гуд, может ошибку допустил какую то тогда =) спасибо