|
|
|
| Надумал вот сделать поисковик по FTP-ресурсам локальной сети, но уже есть первое препятствие: время. Ведь для поиска нужно сначала проиндексировать все имеющиеся ресурсы; но простой подсчет показывает, что только на "опрос" IP-адресов от *.*.0.0 до *.*.20.255 уйдет около полутора часов. А ведь надо еще, в случае успеха, их "облазить", да еще и в БД записать. Никакими 30-ю секундами на скрипт тут и не пахнет=)
Выходов я сумел придумать только два: либо менять лимит времени выполнения, либо опрашивать, сколько получится, и записывать, докуда дошли, чтобы потом начать с этого места.
Оба способа мне не нравятся. Первый - во-первых, неспортивно РНР на полтора часа грузить, а во-вторых, если я вдруг захочу поделиться сим творением с народом, придется просить кого-то размещать егона своем сервере; ясен пень, никто мне не даст так машину грузить. Второй способ - с учетом перезагрузок процесс индескации растянется еще раза в два, и недостатки первого способа только усугубятся.
Как еще можно поступить? | |
|
|
|
|
|
|
|
для: Киналь
(06.03.2007 в 17:16)
| | Хм... никак обойти это нельзя - поисковые машины работают обычно бепристанно обновляя базу данных, а клиенты обращаются непосредственно к базе данных и у них создаётся иллюзия, что всё работает быстро. Поиск и парсинг - вещь утомительная и длительная. | |
|
|
|
|
|
|
|
для: Киналь
(06.03.2007 в 17:16)
| | Я делал подобное, правда, только для одного фтп.
Просто к нему был затруднён доступ, поэтому хотелось иметь возможность просмотреть содержимое "в оффлайне".
Поэтому суть моей идеи состоит в том, чтобы возложить функции обработки и индексирования на пользователей ресурса.
Надо, конечно, в начале получить список фтп. Затем начинать своими силами "индексацию".
"Заходить" на фтп скриптом. Потом ходить по его папкам. При этом всё содержимое будет параллельно отображению падать в базу. При повторных обращениях, уже показывать данные из базы, либо, если прошёл срок периодичности обновления индекса - снова считывать и обновлять базу.
Таким образом не будет нагрузки на сервер более того, чем его используют посетители. Во-вторых, в первую очередь будут "индексироваться" наиболее интересные пользователям фтп и их каталоги.
Параллельно можно запускать и скрипт-робот. Который смотрит в базе на каком фтп считан, например, каталог первого уровня, но никто в него не входил и нет его содержимого. Вот тогда робот зайдёт и проиндексирует, занесёт в базу его содержимое, до последнего уровня.
Скажем, при запуске раз в 1-5 минут и сканируя по одной-две недополученных папки - робот также не будет нагружать сервер, но будет помогать обновлять/расширять базу.
Ещё один робот(или тот же в самом начале) может просто пробегать по диапазону ип и определять наличие фтп на них, создавая в базе новые "учётные записи".
Примерно так. | |
|
|
|
|
|
|
|
для: Киналь
(06.03.2007 в 17:16)
| | а что если те люди которые хотят "расшарить" свой фтп просто подадут заявки с IP адресом, тогда искать и вовсе не прейдёться | |
|
|
|
|
|
|
|
для: @ndry
(07.03.2007 в 14:10)
| | >а что если те люди которые хотят "расшарить" свой фтп просто подадут заявки с IP адресом, тогда искать и вовсе не прейдёться
Да, видимо, так и придется сделать. Спасибо за ответы! | |
|
|
|
|
|
|
|
для: Киналь
(06.03.2007 в 17:16)
| | Так то да... но можно поставиь время выполнения сколько тебе нужно, например
set_time_limit(6000);
фишка поиска состоит в том что когда набираеш, почти сразу получаеш результат. Поэтому надо каталоги, названия файлов и текстовые файлы хранить в базе | |
|
|
|