The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Проблема с скриптом на перле 'Out of Memory'"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Проблема с скриптом на перле 'Out of Memory'"
Сообщение от flusher emailИскать по авторуВ закладки(??) on 29-Апр-04, 20:47  (MSK)
В общем есть скрипт, который выбирает данные из базы(9000 записей). И потом для каждой записи лазит по инету собирает информацию...
DBI XML::Smart LWP::UserAgent HTTP::Cookies LWP::Simple

Возникла проблема, после 500 записей валится от отсутствия памяти. У меня используется рекурсия..

sub get_data
{
    my ($name, $recurse) = @_;
    my $comp_name = $name;
    $comp_name =~ s/\\/\\\\/g;
    $comp_name =~ s/\(/\\\(/g;
    $comp_name =~ s/\)/\\\)/g;
    $comp_name =~ s/\+/\\\+/g;
    $comp_name =~ s/\./\\\./g;
    $comp_name =~ s/\[/\\\[/g;
    $comp_name =~ s/\]/\\\]/g;
    $comp_name =~ s/\*/\\\*/g;
    $comp_name =~ s/\?/\\\?/g;
    $comp_name =~ s/\-/\\\-/g;
    my @search_result = get_url('http://www.domen.com/cat.php', 'BOT', 0, 0, 0);
    my $compare = '<a[\s]+href=page.php?ID=([0-9])>[\s]+'.$comp_name;
    if ($search_result[1] =~ /$compare/i)
    {
        return $1;
    }
    else
    {
        my $recurse_name = $name;
        if ($recurse == 0)
        {
            while ($recurse_name !~ /^[a-z0-9#@]/i)
            {
                $recurse_name =~ s/^.//;
            }
            while ($recurse_name !~ /[a-z0-9)]$/i)
            {
                $recurse_name =~ s/.$//;
            }
            $recurse += 1;
        }
        elsif ($recurse == 1)
        {
            $recurse_name =~ s/\(.+\)//g;
            $recurse_name =~ s/\ /\_/g;
            $recurse_name =~ s/\W//g;
            $recurse_name =~ s/\_/\ /g;
            $recurse_name =~ s/[\s]+/ /g;
            $recurse +=1;
        }
        elsif ($recurse == 2)
        {
            return 0;
        }
        my $recurse_reply = get_data($recurse_name, $recurse);
        return $recurse_reply;
    }
}

Вот. И вот тут валится скрипт. Как можно перед вызовом рекурсии удалить переменные, чтоб освободить память????

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Проблема с скриптом на перле 'Out of Memory'"
Сообщение от uldus Искать по авторуВ закладки(ok) on 30-Апр-04, 11:26  (MSK)
>Вот. И вот тут валится скрипт. Как можно перед вызовом рекурсии удалить
>переменные, чтоб освободить память????

undef $comp_name;
@search_result = ();

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Проблема с скриптом на перле 'Out of Memory'"
Сообщение от flusher emailИскать по авторуВ закладки(??) on 30-Апр-04, 11:32  (MSK)
>>Вот. И вот тут валится скрипт. Как можно перед вызовом рекурсии удалить
>>переменные, чтоб освободить память????
>
>undef $comp_name;
>@search_result = ();


И только? Больше никаких возможностей?

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру