2) ? strtolower($item) : ''; } //sw() function go_to_dir($dir){ global $ifd, $extens, $closeddirs; # дескриптор ,расширения , закрытые папки $handle = opendir($dir); while (false !== ($file = readdir($handle))) { if (is_dir($dir . '/' . $file) && !in_array($file, $closeddirs)){ ## если папка, и если имени нет в массиве запрещённых go_to_dir($dir . "/" . $file); } else if ( in_array(strrchr($file, '.'), $extens) && (($fsize = filesize ($dir."/".$file)) > 0 && $fsize < 2000000)) { ### если файл, проверяется есть ли в массиве $extens такое расширение ### проверку размера файла можно убрать если нужно $fd = fopen ($dir. '/' .$file, "r"); flock($fd, LOCK_EX); $contents = split('[[:punct:][:space:]]+', fread($fd, $fsize)); array_walk($contents, 'sw'); $contents=array_unique($contents); // разбиваем на слова, убираем слова короче 3х букв // убираем повторяющиеся слова fwrite( $ifd , $dir. '/' .$file . '|' . implode (" ", $contents) . "\n"); ### Запись echo $dir. '/' .$file . " проиндексирован
"; flush(); } } closedir($handle); } // go_to_dir() $indexfile = "indexfile.txt"; //файл, в котором будет лежать индекс $ifd = fopen($indexfile, "r+") OR exit('fopen '); flock($ifd, LOCK_EX) OR exit( 'flock'); # Сразу получить дескриптор и заблокировать ftruncate( $ifd, 0 ) OR exit( 'ftruncate'); # Усечь до нулевой длинны $indexdir = "./forum"; //индексируемая директория go_to_dir($indexdir); flock($ifd, LOCK_UN); fclose($ifd); echo '
'; ?>