Парсер RDF+массовый WHOIS

Автор Vader, 17 июня 2009, 22:14:23

0 Пользователи и 1 Гость просматривают эту тему.

Vader

Есть задача:
взять RDF-дамп одного ресурса весом 1,8гб, выбрать из него все записи (в данном случае это будет имя домена) по определённому условию, затем проверить WHOIS по каждому домену и занести всё это в базу.

Доменов (записей) получится около 67к.

Возникли вопросы: 1. работал ли кто-нибудь при парсинге с форматом RDF (интересует PHP), есть ли готовые классы, которые смогут работать с таким объёмом данных.

2. По вхуизу: явно, что 67к доменов прочекать, используя один IP, не выйдет. Тут тоже появляется проблема и соотв. несколько вариантов решения — использовать разные IP, обращаться к WHOIS через сервисы-посредники. Вот думаю, какой вариант проще.
Если тебе дано предугадывать ход мыслей человека, случайностей не будет. © Пила

g-p

#1
касательно парсера:
hxxp://www.jasonandann.com/php_rdf/ - знакомый занимался подобной работой, что у тебя, но не с таким объёмом. может это поможет.
я не знаю как будет работать php с таким объёмом данных. тут не компилируемые языки прилично работать будут, что ж тогда взять с интерпретатора php.

касательно вхуизу:
не понимаю проблемы с whois - это собственно протокол прикладного уровня, но обычно доменные сайты предоставляют веб-интерфейс для команды whois линукса, ты это имеешь ввиду? есть реализация программы whois под винду. если тебе в одном потоке обрабатывать 67к записей понадобится от 18 до 37 часов. собственно задача у тебя разовая - взять что есть, посчитать и забыть, так? я к тому виду что с многопоточностью не очень в PHP.



weend

Конкретно сабжем не занимался, но все таки внесу свои 2 копейки :)

Настройки сервера позволяют устанавливать максимальное время работы скрипты - как правило, на обычных платных хостингах, что-то около 30 секунд :) - это настройка по умолчаню. Да и на отдельно выкупленном серваке мне тоже это ограничение встречалось. Соответственно, если сервак Ваш - не поленись, посмотри сначала, кажется max_execution_time.

Ограничены так же и объемы используемой оперативной памяти - параметр memory_limit.

А вообще, ИМХО, проще и правильнее написать Си'шный код и запустить его в кроне - все сделает в разы быстрее... (хотя и Perl заметно шустрее будет) Или так вообще слить весь дамп на домашний комп - обработать тем же Си'шным скриптом, а результат сохранить в обычных текстовиках, скажем, по 1000 записей (итого 67 файлов). Разбивать, ИМХО, стоит только для PHP реализации whois-запросов.

Затем, при запросах whois обрабатывать файлы последовательно, а в каждом обработанном файле ставить метку об успешной обработке. Т.о. получаем возможность разбивать хуиз-запросы как во времени, так и в пространстве (разл. хуиз-сервисы или IP), при этом не думая о том, что потеряем хвосты и сдублируемся.

Vader

Цитата: g-p от 20 июня 2009, 02:20:38не понимаю проблемы с whois - это собственно протокол прикладного уровня, но обычно доменные сайты предоставляют веб-интерфейс для команды whois линукса, ты это имеешь ввиду? есть реализация программы whois под винду. если тебе в одном потоке обрабатывать 67к записей понадобится от 18 до 37 часов. собственно задача у тебя разовая - взять что есть, посчитать и забыть, так? я к тому виду что с многопоточностью не очень в PHP.

Проблема в том, что любой WHOIS-сервер имеет ограничение на кол-во обращений к нему в течение единицы времени. Например, сервер РОСНИИРОС допускает не более 100 обращений в минуту. Как ты и посчитал, в идеале получится 37 часов. Что ж, не очень по скорости, но, да, задача разовая, вернее нечастая (раз в месяц).

Цитировать
Настройки сервера позволяют устанавливать максимальное время работы скрипты - как правило, на обычных платных хостингах, что-то около 30 секунд :) - это настройка по умолчаню. Да и на отдельно выкупленном серваке мне тоже это ограничение встречалось. Соответственно, если сервак Ваш - не поленись, посмотри сначала, кажется max_execution_time.

Ограничены так же и объемы используемой оперативной памяти - параметр memory_limit.
Разумеется, с дампом я буду работать на локальном компе и все нужные директивы в php.ini могу настроить.
Цитата: weend от 20 июня 2009, 09:27:35обработать тем же Си'шным скриптом, а результат сохранить в обычных текстовиках, скажем, по 1000 записей (итого 67 файлов). Разбивать, ИМХО, стоит только для PHP реализации whois-запросов.
Я знаю, что надо выбирать язык под задачу, а не задачу подстраивать под язык, но боюсь, что моих мегазнаний в C и С++ не хватит для реализации задачи. Хотя, php является си-образным языком.


Собственно, если не получится отпарсить дамп, попробую связкой php+curl забрать все записи в онлайн-режиме. Это уж точно сработает, только работать будет долго. %)

Спасибо за советы.
Если тебе дано предугадывать ход мыслей человека, случайностей не будет. © Пила