|
 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 | |
|
|
|
|
|
|
|
для: Лена
(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 это случайно не каталог? | |
|
|
|
|
|
|
|
для: Trianon
(15.09.2008 в 17:28)
| | advices - это каталог. В директории content таких каталогов много, в них - текстовые файлы, которые надо открыть и проиндексировать | |
|
|
|
|
|
|
|
для: Лена
(15.09.2008 в 17:31)
| | и тем не менее скрипт на 23-й строке пытается открыть этот элемент именно как файл (с помощью fopen())
Судя по коду, скрипт расчитан на работу с единственным подкаталогом, в котором лежат только файлы. | |
|
|
|
|
 2.1 Кб |
|
|
для: Trianon
(15.09.2008 в 17:35)
| | Раскрываю я теперь каталоги. Теперь вот такая ошибка:
Notice: Undefined variable: fullfile in z:\home\avart.ua\www\text_index.php on line 63 | |
|
|
|
|
|
|
|
для: Лена
(16.09.2008 в 09:47)
| | в основном коде у Вас нигде переменной fullfile ничего не присваивается.
Одноименная локальная переменная в функкции go_to_dir() -
а) это вообще другая переменная
б) с каждым очередным файлом из каталога её предыдущее значение теряется - перезаписывается новым
в) в конце обработки каждого каталога по достижении конца функции она прекращает существование.
А return в функции нет. | |
|
|
|
|
 2.2 Кб |
|
|
для: Trianon
(16.09.2008 в 09:54)
| | Возвращаю значение функции go_to_dir(), результат ее действия сохраняю в $fullfile , чтобы потом все записать в файл. Не записывается, файл пустой. Пробовала вывести $fullfilе - ничего
$fullfile = go_to_dir($indexdir);
echo $fullfile;
Значит, не правильно функция работает? | |
|
|
|
|
|
|
|
для: Лена
(16.09.2008 в 13:20)
| | Вы теряете результаты рекурсивных вызовов. надо изменить строку вызова так, чтобы она дописывала результат.
$fullfile .= go_to_dir($dir . "/" . $file);
|
| |
|
|
|
|
|
|
|
для: Trianon
(16.09.2008 в 15:35)
| | Спасибо. Не работает. | |
|
|
|
|
 1.9 Кб |
|
|
для: Лена
(16.09.2008 в 16:01)
| | у меня такой индексатор частенько вылетает с предупреждением о превышении размера используемой памяти , наверное для больших файлов , fread($fd, filesize($fname)) негодится.
а так работает | |
|
|
|
|
|
|
|
для: xx77
(16.09.2008 в 17:49)
| | UPD//
наверное там лучше было-бы split('\W+', $contents);
вместо _replace и explode | |
|
|
|
|
|
|
|
для: xx77
(16.09.2008 в 18:09)
| | Михаил, спасибо вам большое.
Есть две нерешенные проблемы.
Одна касается случая, когда надо индексировать не текущую директорию. От текущей к ней путь такой:
$indexdir = "./content/"; //индексируемая директория
Если так, то ничего не индексируется.
Вторая проблема такая. Если индексируемая директория - текущая, то индексируются только директории, в нее вложенные, например: ./configs,./counter, ./lightbox, директории, расположенные глубже не индексируются, например, типа: ./configs/map/, ./configs/advise/ и т.д. Как это сделать?
И последнее. Не вижу разницы между array_filter() и array_walk () - они же одно и то же делают, проходятся по элементам массива, применяют к ним функцию | |
|
|
|
|
|
|
|
для: Лена
(17.09.2008 в 14:07)
| | Поняла. В рекурсии еще уровень вложения надо указывать, тогда должно выводиться. Вечером попробую. | |
|
|
|
|
|
|
|
для: Лена
(17.09.2008 в 14:38)
| | ой ,)) и правда не работало во вложенных папках :)
неправильно проверялось является-ли имя папкой
там вместо if(is_dir($file)) надо-было if(is_dir($dir . '/' . $file))
и вызывать функцию в склучае с ./content/ надо go_to_dir('./content');
ещё теперь вот никак не осмыслю как-же можно туда впихнуть предложенное мной split('\W+', $contents)
;) | |
|
|
|
|
 2 Кб |
|
|
для: xx77
(17.09.2008 в 15:47)
| | прикрепил.
наверное здесь есть одна оплошность с моей стороны --
применение strtolower отдельно к каждому елементу массива
,вместо применения ко всему тексту сразу
UPD//
поправлял "17.12" ) | |
|
|
|