Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Слетает скрипт


Автор: ImSave 12.3.2010, 23:50
Всем привет.

FreeBSD (Apache+Perl)
Есть скрипт, работающий бесконечно в качестве веб-сервера (использую use HTTP::Daemon;)

запускаю его. минут через 5 слетает.
в логах:
[Fri Mar 12 13:50:18 2010] [warn] [client х.х.х.х] Timeout waiting for output from CGI script /usr/home/lexa/cgi-bin/proba.pl

подскажите пожалуйста что это? и как исправить?

Автор: mvsgt 13.3.2010, 00:51
это скрипт не отвечает. Исправить просто - надо починить.

Автор: ImSave 13.3.2010, 10:14
всмысле не отвечает? он работает в качестве веб-сервера
Код

#!/usr/bin/perl

use HTTP::Daemon;
use LWP::UserAgent;
use CGI::Carp qw(fatalsToBrowser);
use Net::hostent;

my $port = 4322;

$SIG{PIPE} = 'IGNORE';

my $server = HTTP::Daemon->new( LocalPort => $port ) or
die "Can't start server ($@)" unless defined $server;

my $ua = LWP::UserAgent->new;
while (my $connection = $server->accept) {
//...
// обработка коннекта
//...
}

работает он отлично. память не поедает.

обрабатывает он в данный момент или просто висит
все-равно тупо слетает через 5-6 мин   smile  в чем причина?

Автор: dva300 13.3.2010, 11:07
Цитата(ImSave @ 13.3.2010,  10:14)
всмысле не отвечает? он работает в качестве веб-сервера
Код

#!/usr/bin/perl

use HTTP::Daemon;
use LWP::UserAgent;
use CGI::Carp qw(fatalsToBrowser);
use Net::hostent;

my $port = 4322;

$SIG{PIPE} = 'IGNORE';

my $server = HTTP::Daemon->new( LocalPort => $port ) or
die "Can't start server ($@)" unless defined $server;

my $ua = LWP::UserAgent->new;
while (my $connection = $server->accept) {
//...
// обработка коннекта
//...
}

работает он отлично. память не поедает.

обрабатывает он в данный момент или просто висит
все-равно тупо слетает через 5-6 мин   smile  в чем причина?

у меня стоит как вкопанный уже мин 30 и не падает. 
и это не то что вы подумали  smile 

я бы добавил еще reuse=1 и посмотрел в сторону Apache/Timeout уж больно 5 мин похоже на 300 сек значения по умолчанию.

уточни :
Цитата

обрабатывает он в данный момент или просто висит

правильно ли я понимаю что при обработке входящего соединения от все равно через 5 мин отваливается ? 

Автор: ImSave 13.3.2010, 11:12
Цитата

я бы добавил еще reuse=1 и посмотрел в сторону Apache/Timeout уж больно 5 мин похоже на 300 сек значения по умолчанию.
я могу это изменить? не имея админских прав

Цитата

правильно ли я понимаю что при обработке входящего соединения от все равно через 5 мин отваливается ? 
да

Автор: dva300 13.3.2010, 11:17
Цитата(ImSave @ 13.3.2010,  11:12)
Цитата

я бы добавил еще reuse=1 и посмотрел в сторону Apache/Timeout уж больно 5 мин похоже на 300 сек значения по умолчанию.
я могу это изменить? не имея админских прав

Цитата

правильно ли я понимаю что при обработке входящего соединения от все равно через 5 мин отваливается ? 
да

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

Автор: mvsgt 13.3.2010, 11:23
>FreeBSD (Apache+Perl)

А при чём тут апач? Либо апач+use CGI::Carp qw(fatalsToBrowser), либо use HTTP::Daemon, как мне кажется. Вы же не запускаете апач из IIS'а . Так что определяйтесь - либо пишете CGI скрипт, либо полноценный web сервер. И use strict никто ещё не отменял. 

Автор: dva300 13.3.2010, 11:33
Цитата(mvsgt @ 13.3.2010,  11:23)
>FreeBSD (Apache+Perl)

А при чём тут апач? Либо апач+use CGI::Carp qw(fatalsToBrowser), либо use HTTP::Daemon, как мне кажется. Вы же не запускаете апач из IIS'а . Так что определяйтесь - либо пишете CGI скрипт, либо полноценный web сервер. И use strict никто ещё не отменял.

Apache тут действительно не причем. Пятница прошла успешно smile 

но кто-то же его отрубает ?! 

ImSave что там с хостингом ? может у того кто отрубает даже фамилия есть  smile 

Автор: ImSave 13.3.2010, 11:33
mvsgt, прошу прощения, я новичек и может еще не грамотно пока выражаюсь в этой области.
Вобщем код который я привел выше находится в /usr/home/lexa/cgi-bin/proba.pl
запускал скрипт через putty и через браузер - разницы нет.

хостинг...гм...директор полностью арендует сервак и мне для баловства выделил пользователя (lexa.oooplus.ru). вот
видимо косяк в настройках апача?
а можно в скрипте что-нить дописать, чтоб он периодически сообщал "я тут. не отрубай меня"

Автор: mvsgt 13.3.2010, 23:33
ImSave, проще говоря Вы делаете что-то странное. Так как непонятно чего Вы хотели добиться, объяснить что делать невозможно. http::daemon предназначен для написания http серверов, без апача. У меня есть подозрение, что Вам нужен скрипт, выполняющийся как CGI из апача, но похоже у Вас нет начальных знаний по теме. Стоит почитать про CGI скрипты. Посмотрите модуль http://search.cpan.org/~lds/CGI.pm-3.49/lib/CGI.pmна CPAN - думаю, нужен именно он, а не HTTP::Daemon.

Автор: ImSave 13.3.2010, 23:49
да! вы правы. я новичек и не правильно истолковал мысль. у меня обычный прокси-сервер написанный на Perl (висит на 4322 порту, и на который перенаправляются запросы браузера). еще раз прошу прощения за глупость.

вобщем как решить проблему, чтобы скрипт не слетал?

Автор: ImSave 18.3.2010, 22:31
Цитата(ImSave @ 13.3.2010,  11:33)
а можно в скрипте что-нить дописать, чтоб он периодически сообщал "я тут. не отрубай меня"

 smile 

Автор: krypt3r 19.3.2010, 07:11
Есть такое понятие, как "сигналы".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)