Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: создание индекса для поиска
 
 автор: Лена   (15.09.2008 в 17:12)   письмо автору
1.9 Кб
 
 

Запускаю индекс-файл(см. аттач), выдает вот что:
Warning: fopen(content/advices) [function.fopen]: failed to open stream: Permission denied in w:\home\avart.ua\www\text_index.php on line 23

Warning: fread(): supplied argument is not a valid stream resource in w:\home\avart.ua\www\text_index.php on line 24

Notice: Undefined variable: fullfile in w:\home\avart.ua\www\text_index.php on line 44

Warning: fclose(): supplied argument is not a valid stream resource in w:\home\avart.ua\www\text_index.php on line 45
advices проиндексирован

Время индексации: 0.003 секунд
Размер индекса: 0 Kb

  Ответить  
 
 автор: Trianon   (15.09.2008 в 17:28)   письмо автору
 
   для: Лена   (15.09.2008 в 17:12)
 

Ошибка одна:
Warning: fopen(content/advices) [function.fopen]: failed to open stream: Permission denied in w:\home\avart.ua\www\text_index.php on line 23
Невозможно открыть файл content/advices : запрещен доступ

Остальное - результат того, что скрипт не проверяет, удалось ли открыть файл.
Кстати advices это случайно не каталог?

  Ответить  
 
 автор: Лена   (15.09.2008 в 17:31)   письмо автору
 
   для: Trianon   (15.09.2008 в 17:28)
 

advices - это каталог. В директории content таких каталогов много, в них - текстовые файлы, которые надо открыть и проиндексировать

  Ответить  
 
 автор: Trianon   (15.09.2008 в 17:35)   письмо автору
 
   для: Лена   (15.09.2008 в 17:31)
 

и тем не менее скрипт на 23-й строке пытается открыть этот элемент именно как файл (с помощью fopen())

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

  Ответить  
 
 автор: Лена   (16.09.2008 в 09:47)   письмо автору
2.1 Кб
 
   для: Trianon   (15.09.2008 в 17:35)
 

Раскрываю я теперь каталоги. Теперь вот такая ошибка:
Notice: Undefined variable: fullfile in z:\home\avart.ua\www\text_index.php on line 63

  Ответить  
 
 автор: Trianon   (16.09.2008 в 09:54)   письмо автору
 
   для: Лена   (16.09.2008 в 09:47)
 

в основном коде у Вас нигде переменной fullfile ничего не присваивается.
Одноименная локальная переменная в функкции go_to_dir() -
а) это вообще другая переменная
б) с каждым очередным файлом из каталога её предыдущее значение теряется - перезаписывается новым
в) в конце обработки каждого каталога по достижении конца функции она прекращает существование.
А return в функции нет.

  Ответить  
 
 автор: Лена   (16.09.2008 в 13:20)   письмо автору
2.2 Кб
 
   для: Trianon   (16.09.2008 в 09:54)
 

Возвращаю значение функции go_to_dir(), результат ее действия сохраняю в $fullfile , чтобы потом все записать в файл. Не записывается, файл пустой. Пробовала вывести $fullfilе - ничего
$fullfile = go_to_dir($indexdir);
echo $fullfile;

Значит, не правильно функция работает?

  Ответить  
 
 автор: Trianon   (16.09.2008 в 15:35)   письмо автору
 
   для: Лена   (16.09.2008 в 13:20)
 

Вы теряете результаты рекурсивных вызовов. надо изменить строку вызова так, чтобы она дописывала результат.
            $fullfile .= go_to_dir($dir . "/" . $file);

  Ответить  
 
 автор: Лена   (16.09.2008 в 16:01)   письмо автору
 
   для: Trianon   (16.09.2008 в 15:35)
 

Спасибо. Не работает.

  Ответить  
 
 автор: xx77   (16.09.2008 в 17:49)   письмо автору
1.9 Кб
 
   для: Лена   (16.09.2008 в 16:01)
 

у меня такой индексатор частенько вылетает с предупреждением о превышении размера используемой памяти , наверное для больших файлов , fread($fd, filesize($fname)) негодится.
а так работает

  Ответить  
 
 автор: xx77   (16.09.2008 в 18:09)   письмо автору
 
   для: xx77   (16.09.2008 в 17:49)
 

UPD//
наверное там лучше было-бы split('\W+', $contents);
вместо _replace и explode

  Ответить  
 
 автор: Лена   (17.09.2008 в 14:07)   письмо автору
 
   для: xx77   (16.09.2008 в 18:09)
 

Михаил, спасибо вам большое.
Есть две нерешенные проблемы.
Одна касается случая, когда надо индексировать не текущую директорию. От текущей к ней путь такой:
$indexdir = "./content/"; //индексируемая директория
Если так, то ничего не индексируется.
Вторая проблема такая. Если индексируемая директория - текущая, то индексируются только директории, в нее вложенные, например: ./configs,./counter, ./lightbox, директории, расположенные глубже не индексируются, например, типа: ./configs/map/, ./configs/advise/ и т.д. Как это сделать?
И последнее. Не вижу разницы между array_filter() и array_walk () - они же одно и то же делают, проходятся по элементам массива, применяют к ним функцию

  Ответить  
 
 автор: Лена   (17.09.2008 в 14:38)   письмо автору
 
   для: Лена   (17.09.2008 в 14:07)
 

Поняла. В рекурсии еще уровень вложения надо указывать, тогда должно выводиться. Вечером попробую.

  Ответить  
 
 автор: xx77   (17.09.2008 в 15:47)   письмо автору
 
   для: Лена   (17.09.2008 в 14:38)
 

ой ,)) и правда не работало во вложенных папках :)
неправильно проверялось является-ли имя папкой
там вместо if(is_dir($file)) надо-было if(is_dir($dir . '/' . $file))

и вызывать функцию в склучае с ./content/ надо go_to_dir('./content');

ещё теперь вот никак не осмыслю как-же можно туда впихнуть предложенное мной split('\W+', $contents)
;)

  Ответить  
 
 автор: xx77   (17.09.2008 в 16:55)   письмо автору
2 Кб
 
   для: xx77   (17.09.2008 в 15:47)
 

прикрепил.
наверное здесь есть одна оплошность с моей стороны --
применение strtolower отдельно к каждому елементу массива
,вместо применения ко всему тексту сразу

UPD//
поправлял "17.12" )

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования