search spider

E
На сайте с 12.01.2004
Offline
17
#21
alyak:
Нужно учитывать что основная проблема спайдеров это тайм-ауты когда сервер недоступен или долго дожидаться отклика. Соответсвенно если это будет однозадачный процесс , то он может растянуться . Вывод - несколько паралельных процессов , на перле можно использовать создание детских процессов , или запустить несколько копий...

Другой вывод - использовать 1 процес с nonblocking сокетам с обработкой их в poll select etc. После двух-трех сотен конкурентных и медленных соединений, разница в нагрузке на процессор будет ощутимо меньше (в разы) чем при использовании тредов и уж тем более отдельных процессов.

А вообще запускать спайдер из-под апача - странно это.

lagif
На сайте с 15.12.2004
Offline
30
#22

Interitus, А свой парсер писать надо :) Все тестенные мной парсеры все равно не все отлавливают...

Это тоже пройдет...
A
На сайте с 02.10.2004
Offline
31
#23
Interitus:
По-моему это слишком оптимистичное утверждение. Если использовать mod_perl в многопоточном апаче (worker.mpm или подобное) - то по крайней мере пакет LWP будет глючить. Нормально работать будет только в prefork режиме, что по сути то же самое, что создание нескольких процессов.

Ну так подправь LWP для себя если будет глючить . Я всегда себе подправляю и не важно в чем и кем написано. Кроме того остается способ через сокеты , примитивно. Если требуется сверхпроизводительность, дешевле поставить еще одну тачку чем доводить до совершенства.

A
На сайте с 02.10.2004
Offline
31
#24
eshum:

А вообще запускать спайдер из-под апача - странно это.

Это один из вариантов - дешево и сердито, зато написать можно тяпляп в один процесс. Если речь идет о серьезных вещах, тогда спайдер выделяется в отдельную задачу , и улучшается как отдельное звено. Тогда наверное лучше всего будет C++. Но при создании поисковика в любом случае найдется много мест где лучше приложить усилия в первую очередь, например парсер - очень нетривиальная задача с учетом того что пишут HTML как попало. Одних кодировок новых пользователи напридумывали штук пятнадцать, одна из самых прикольных - KOI8_WIN1251 .

WE
На сайте с 28.06.2005
Offline
18
#25
lagif:
W.Ed., Мой такую цифру съедает лениво за 1,5 суток (я угадаю эту мелодию с 2-х нот :) ).
Лениво - это если проставить глубину чтения где-то 3-го уровня, пустить 3 потока и зашейпить канал до 32К (иначе я всю локалку повешу).
Притом, что в сях гораздо проще настроить сокеты как хочется :) и многое-многое другое... :)

У меня ситуация пока хуже (тестирую у одного хостера), так что написанная мной цифра - это при минимальной загрузке процессора (пришлось ограничить расписанием по 20 доменов в 10 минут)

2 lagif:

какие именно настройки сокетов имелись в виду?

lagif
На сайте с 15.12.2004
Offline
30
#26

W.Ed., Начнем с того, что я не нашла в PHP процедур типа setsockopt, и это меня расстроило. Во-вторых, ресурсов php жрет куда больше сишных бинарников... взять хотя бы тот факт, на чем php написан.

В-третьих, разумеется, я подсознательно защищаю свой метод :)

alyak, и правда, зачем апач? Чем не нравится голый HTTP-запрос? А кодировки - почти все можно iconv и прочими enca'ми определить и перекодировать... то, что там пишут в мета-заголовках пользователи, для спайдера, на мой взгляд, неактуально.

WE
На сайте с 28.06.2005
Offline
18
#27
lagif:
W.Ed., Начнем с того, что я не нашла в PHP процедур типа setsockopt, и это меня расстроило. Во-вторых, ресурсов php жрет куда больше сишных бинарников... взять хотя бы тот факт, на чем php написан.
В-третьих, разумеется, я подсознательно защищаю свой метод :)

существует функция socket_set_option

(PHP 4 >= 4.3.0, PHP 5)

да, кстати, во время отладки большая часть ресурсов тратится на вывод ошибок :) (в браузере)

lagif
На сайте с 15.12.2004
Offline
30
#28

W.Ed., если опций там столько же, сколько в сях, вопрос снят. :) Тем не менее, на мой взгляд, писать на php - все равно что забивать гвозди микроскопом.

и, кстати, зачем спайдеру браузер? ошибки в лог записываются - и ресурсов это жрет ну совсем немного, если учесть, что используется при этом перенаправление стандартных потоков...

но это уже тонкости, которые относятся к "многое-многое другое". Продолжать спор не вижу смысла :)

A
На сайте с 02.10.2004
Offline
31
#29
lagif:

alyak, и правда, зачем апач? Чем не нравится голый HTTP-запрос? А кодировки - почти все можно iconv и прочими enca'ми определить и перекодировать... то, что там пишут в мета-заголовках пользователи, для спайдера, на мой взгляд, неактуально.

При старте перл вначале загружается сам , дальше он начинает грузить кучу библиотек , это занимает и время и память. Если вы сделаете многопотоковый код - проблем нет, будет работать одна копия. Второй вариант - использовать mod_perl и грузить из-под апача , в этом случае апач загрузит одну копию перла вместе с библиотеками и будет использовать ее для всех ваших приложений.

Что касается PHP , он может быть загружен в память апача как в режиме mod_perl и будет использоватьсмя одна копия , или стартовать как отдельный процесс , будет жрать память под каждую копию . Многозадачность у него слабее чем в перле , поэтому наверное более правильно запускать много копий из-под апача.

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

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

lagif
На сайте с 15.12.2004
Offline
30
#30

alyak, я сторонница написания паука на сях - без перла, апача, браузеров и php. При этом можно использовать хоть pthread'ы, хоть обычное форканье, хоть один процесс с множественными сокетами (едва слышала, не пробовала, говорить не буду). Все это уже выбор, разумеется, разработчика.

Поиск, индексация, интерфейсы поиска - уже вопрос третий...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий