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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с mySQL, обработка ошибок, реконект 
V
    Опции темы
Secandr
Дата 17.3.2015, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



Цитата(noize @  13.3.2015,  22:25 Найти цитируемый пост)
Secandr, советую используйте прагмы 'strict' и 'warnings' везде, где это возможно.


Пол дня потратил на то что бы скрипт запустился после 'strict'. Была пара мест забавных, где стояли просто символы, видимо нечаянно введённые при скролле. Было пару грубых ошибок в бизнеслогике. Поражаюсь как оно вообще работало smile

Правда теперь на одно моё сообщение в логах десяток от 'warnings' :(


Bulat, я сам snmpd переписывал на перл. Работает гораздо шустрее родного, порядка на 2. И биллинг видел на perl, самолично интегрировал такой.

Тут вопрос не холивара, а практичности.  Если у вас 100 000 одновременных сессий и довольно сложная система, то можно и на перле написать, но возникает проблема вот в чём. Сколько человекочасов будет потрачено на разработку? Сколько денег? Сколько на дебаг? Сколько будет стоить час работы гуру в перле на поддержку под такой проект?

И тут уже выясняется, что быстрее дешевле и надёжнее купить коробку с биллингом или взять open source решение и допилить силами средненького админа или интегратора.

Это сообщение отредактировал(а) Secandr - 17.3.2015, 16:47


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
tzirechnoy
Дата 18.3.2015, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата
. Сколько человекочасов будет потрачено на разработку? Сколько денег? Сколько на дебаг?


Думаю, меньшэ чем если писать на питоне или php.

Цитата
Сколько будет стоить час работы гуру в перле на поддержку под такой проект?


Думаю, отчасти потому, что дятлы не то что не пишут на перле -- они про него не знают.
Потому, да, люди стоят денег, но зачем вам плохой программист на разработку системы?

Цитата
купить коробку с биллингом 


Ну, начинается. Мы -- про вопрос на чём можно писать, а не можно ли где-то купить.

PM MAIL   Вверх
Secandr
Дата 18.3.2015, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



tzirechnoy, можно и на асемблере писать, вот это как раз вопрос холивара.
А в жизни всё прозаичнее - ресурсы ограничены и чаще всего выгодно вообще не писать.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Secandr
Дата 24.3.2015, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



Вот, кстати, ещё один интересный момент. Уже в другом софте пригодилось сделать вот так:

Код

my %WARNING;
my %buffer;
my @childs;              #массив потомков
$SIG{__WARN__} = sub {
                        my $msg = shift;
                        chomp($msg);
                        $WARNING{$msg}=1;
                        warn "WARNING: ", $msg,"\n";
                     };
$SIG{__DIE__} =  sub {
                        my $msg = shift;
                        chomp($msg);
                        print "\n\nALL WARNINGS:\n".join("\n", sort keys %WARNING)."\ngot SIG{__DIE__}\n"; 
                        IPC::Shareable->clean_up_all;
                        if (open (SM, "|/usr/sbin/sendmail -t")){
                         print SM "To: ------------\n";
                         print SM "From: ----------------\n";
                         print SM "Subject:!!!!! [ $$ ] got sig __DIE__ at ".localtime()."\n\n";
                         print SM $msg; 
                         print SM "\nALL WARNINGS:\n".join("\n", sort keys %WARNING)."\ngot SIG{__DIE__}\n";
                         print SM "\nbuffer:".Dumper(\%buffer);
                         print SM "\nchilds:".Dumper(\@childs);
                         print SM "\nmore information look on caladan in file /var/log/openFILEbySCRIPT.log\n";
                         close SM;
                        }
                        print $msg;
                        exit;
                      };
$SIG{INT} = \&closePID; # -3
$SIG{TRAP} = \&closePID; # -6
$SIG{TERM} = \&closePID; # -16
$SIG{PIPE} = \&closePID; # 
sub closePID {  
                        my $sig = shift;
                        print "\n\nALL WARNINGS:\n".join("\n", sort keys %WARNING);
                        print "\n\n\nGET SIG $sig\nExit.\n\n\n";
                        IPC::Shareable->clean_up_all;
                        if (open (SM, "|/usr/sbin/sendmail -t")){
                         print SM "To: ----------\n";
                         print SM "From: --------------\n";
                         print SM "Subject:!!!!! [ $$ ] got sig $sig at ".localtime()."\n\n";
                         print SM "\nALL WARNINGS:\n".join("\n", sort keys %WARNING)."\ngot SIG{__DIE__}\n"; 
                         print SM "\nbuffer:".Dumper(\%buffer);
                         print SM "\nchilds:".Dumper(\@childs);
                         print SM "\nmore information look on caladan in file /var/log/openFILEbySCRIPT.log\n";
                         close SM;
                        }
                        exit;
             };


Перехватил и сохранил warning;
Перехватил die и отправил на почту все сообщения warning, die и дамп важных переменных.
Перехватил все сигналы, какие знаю, и так же выслал отладочную информацию на почту.

Особенно интересно смотреть почему сдохли дети порождённые в eval.
eval избавил меня от подыхания всего софта, но перехватить причину гибели потомка я не смог. А парсить многотонные логи ежедневно очень тоскливо...

Нашёл ещё несколько забавных ошибок таким способом...

Так что скрипты мои дохли по большей степени не из-за отключения mySQL по таймауту, а от багов в коде библиотеки...

Вот.

При следующем рестарте перенесу код в демона, посмотрим чего, ещё замечательного я накодил smile

Это сообщение отредактировал(а) Secandr - 24.3.2015, 16:59


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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