Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как быстро соберать ссылки ? обычный цикл работает медленно 
:(
    Опции темы
stan777
Дата 22.3.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



Код

my $base='http://lbyte.ru/';
my %All_links=();
$All_links{$base}=1;
my @temp;
my %WasHere=();

my @new_get=sortlink(getlink($base));
    
    while(scalar(@new_get)>0){
            foreach my $ng(@new_get){
            push @temp,getlink($ng) if !exists($WasHere{$ng});
            $WasHere{$ng}=1;
                }
        @new_get=sortlink(@temp);
       }

Как можно ускорить работу сборщика ссылок ? Когда на сайте больше 5 тысяч ссылок то это работает уже медленно, как быть ? Конечно большее время тратится на скачивание по ссылкам, как устроить параллельное скачивание ? Может через нити smile ? Слышал про POE и ParallelLWP, но хотелось что-нибудь по проще..

Это сообщение отредактировал(а) stan777 - 22.3.2007, 18:57
PM MAIL   Вверх
tishaishii
Дата 23.3.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



Ну 5 тысяч это уже не так мало.
Я бы использовал сразу таблицу в БД, в которой по пути к странице есть уникальный индекс. И пусть за проверку и оптимизацию памяти отвечает СУБД.
PM MAIL ICQ Skype   Вверх
shamber
Дата 23.3.2007, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



tishaishii,  мне кажется его не интересует оптимизация памяти, его интересует  
Цитата(stan777 @  22.3.2007,  18:09 Найти цитируемый пост)
как устроить параллельное скачивание



stan777, если ты поиском поищешь, то наткнешься на тему, где люди обсуждали сборщик контента, даже что-то придумали. Хотя может тебе и не подойдет.

Ладно, чтоб тебе не искать смотри ЗДЕСЬ
А по поводу быстро, Вы же знаете поговорку :
Тише едешь, дальше будешь smile


ЗЫ Хотя наверно я стормозил, по поводу контента.

Это сообщение отредактировал(а) shamber - 23.3.2007, 22:35
PM MAIL Jabber   Вверх
stan777
Дата 23.3.2007, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



Та прога что поссылке это медленно, так как там качает через один сокет, единственное отличие от моей что та закидывает все в базу, а на это тоже время нужно smile.
когда я говорил про быстро я имел ввиду что-то на подобие этого 
Код

for (my $i=0; $i<=$num_thread;$i++){$num+=$i;}

for (my $j=0; $j<=$num_thread; $j++ ){
     $threads[$j]=threads->new(\&child,\@one,$j); 
    }

while($gflag<$num){
    for (my $j=$num_thread; $j >=0; $j--){# <- возможно что-то не нормально с присоединением.
     $gflag+=$threads[$j]->join; 
    }
    }
exit;

sub child{
    my $ref=shift;
    my $count=shift;
    foreach my $me2 (@{$ref}){
    my $d1=get($me2); 
    }
return $count;
}

Только это нормально не работает, не могу понять почему нормально не присодиняет фреды !?
выдает ошибку unbalance string table refcount:(3) for "Socket" duaring global destruction. ?? что за ерунда ?

Это сообщение отредактировал(а) stan777 - 24.3.2007, 00:08
PM MAIL   Вверх
shamber
Дата 24.3.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Всеж таки юзай поиск по слову многопоточность

может чего найдешь для себя.

Это сообщение отредактировал(а) shamber - 24.3.2007, 00:57
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0944 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.