2013-09-25 3 views
1

Я хочу, чтобы мой сервер остановился на несколько секунд, а затем снова начал. Я пытаюсь использовать sleep(5). Это поможет?Как сделать Apache «спящим» на несколько секунд

Я попытался с Perl скрипт, содержащий:

if($mech=~ m/(Connection refused)/) {print "SLEEPING\n";sleep(5);redo;} 
+2

Могу я спросить, где вы положили «сон (5)»? – DanFromGermany

+0

if ($ mech = ~ m/\ (Соединение отклонено \) /) {print "SLEEPING \ n"; sleep (5); redo;} – user2702225

+0

Я пробовал делать это. Если «Connection Refused» соответствует мне $ mech, тогда Apache должен спать в течение 5 секунд, а затем начать снова. – user2702225

ответ

0

Сервер принимает веб-страниц. Клиент подключается к серверу. Perl-скрипт с использованием WWW :: Mechanize - это клиент .

Я подозреваю, что вы пытаетесь сделать следующее:

my $retries = 3; 
my $resp; # response goes here 
while ($retries-- > 0) { 
    $resp = $ua->get("http://www.google.com/"); 
    if (! $resp->is_success) { 
     warn("Failed to get webpage: " . $resp->status_line); 
     sleep(5); 
     next; # continue the while loop 
    } 

    last; # success! 
} 

if ($retries == 0) { 
    die("Too many retries!"); 
} 

# old versions of LWP::UserAgent didn't have decoded_content() 
my $content = $resp->can('decoded_content') ? 
    $resp->decoded_content : $resp->content; 

print($content); 

UPDATE

Вот код, который вы поставляется в комментариях:

use WWW::Mechanize; 
my $mech = new WWW::Mechanize; 
eval { 
    $mech->get($url); 
}; 
if([email protected]) { 
    print STDERR "Burst\n"; 
    print STDERR Dumper($mech); 
    # my $var=$mech; 
    # print STDERR "var $var\n"; 
    # if($mech=~ m/(Connection refused)/) 
    # { 
    #  print "SLEEPING\n"; 
    #  sleep(5); 
    #  redo; 
    # } 

От perdoc -f redo:

Команда «redo» перезапускает блок цикла без повторной оценки условного выражения. Блок «продолжить», если он есть, не выполняется. Если LABEL опущена, команда относится к самому внутреннему замкнутому циклу.

Увидев, что вы не поставили свой код в цикле, вызов redo не имеет никакого эффекта.

+0

использовать WWW :: Mechanize; my $ mech = new WWW :: Mechanize; eval {$ mech-> get ($ url);}; if ($ @) { распечатать STDERR Dumper ($ mech); if ($ mech = ~ m/\ (соединение отклонено \) /) {print "SLEEPING \ n"; sleep (5); redo;} это то, что я пытаюсь сделать – user2702225

+0

, есть команда redo в perl – user2702225

+0

использовать WWW :: Mechanize; my $ mech = new WWW :: Mechanize; eval { $ mech-> get ($ url); }; if ($ @) { print STDERR "Burst \ n"; печатать STDERR Dumper ($ mech); if ($ mech = ~ m/(Connection failed) /) { Печать "SLEEPING \ n"; сон (5); redo; }} вот мой отредактированный код .. будет работать, как я его использовал – user2702225

Смежные вопросы