169 похожих чатов

Я, честно говоря, потерял дар речи и немного шокирован. Нет ли

здесь программистов на Perl?
Не пользователи pm, настоящие программисты на Perl?
Я имею в виду людей, которые знают BEGIN и END?

...
my $f = $0; $fe =~s/.pl$//; file_out("$f.pid",$$);
BEGIN { "read save data\n" }
END {
"write save data\n";
print "Going down ... \n";
$f = $0; $fe =~s/.pl$//;
if (-e "$f.restart" && `cat $f.restart` == 1 ){ print "reboot \n"; exec("perl $0"); } else { print "no reboot\n";}
}

44 ответов

102 просмотра

А что непонятно с BEGIN/END?

Daniel Даниэль- Автор вопроса
Vyacheslav Koval
А что непонятно с BEGIN/END?

Почему здесь никто этим не пользуется?

Daniel Даниэль
Почему здесь никто этим не пользуется?

Когда нужно - пользуются. Например, он используется в use под капотом. Но в целом, они редко нужны.

Ясно. Синглетонами, ещё, поди балуешься )

Daniel Даниэль- Автор вопроса
Daniel Даниэль
Почему здесь никто этим не пользуется?

Я пользуюсь BEGIN периодически. END не припомню, чтобы использовал

Daniel Даниэль
END { disconnect_database();}

Он и так должен отсоединиться, когда объект будет уничтожаться

Daniel Даниэль
END { disconnect_database();}

за тебя ОС отключит соединение, когда процесс прибъётся

Daniel Даниэль- Автор вопроса
basiliscos
за тебя ОС отключит соединение, когда процесс приб...

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

Daniel Даниэль
И что показывает база данных? Я никогда не слышал,...

Когда процесс закрывается ОС закрывает все его дескрипторы. В том числе и сетевые сокеты. Во время закрытия сетевого сокета для TCP идет спец пакет "сокет закрыт с другой стороны". По нему на стороне сервера ОС информирует СУБД что дескриптор закрыт и уже СУБД сама делает что ей надо в связи с отключением коннекта.

Warstone
Когда процесс закрывается ОС закрывает все его дес...

да видимо он хочет что-то типа END{ $dbh->exec("INSERT INTO DEAD_PROCESSES ($$)"; . Я только не пойму зачем...

Warstone
Когда процесс закрывается ОС закрывает все его дес...

Чистить за собой ресурсы - вполне правильная концепция. Впрочем мнений может быть много, художника обидеть каждый может ))

Андрей aka ti-an
Чистить за собой ресурсы - вполне правильная конце...

Еще один... Чистить ресурсы при порванном коннекте должен сервер. Если он не чистит - его проблемы.

Андрей aka ti-an
Чистить за собой ресурсы - вполне правильная конце...

совершенно верно. И для этого "нормальный" инструмент типа деструктора.

Warstone
Еще один... Чистить ресурсы при порванном коннекте...

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

Андрей aka ti-an
Почему порванном? Вполне себе живом, просто за нен...

В контексте разговора человек говорил что он хочет чистить за собой во время закрытия приложения/скрипта и т.д. Это условия этого разговора, как я понял.

Warstone
В контексте разговора человек говорил что он хочет...

Верно, соединение живое еще. И скрипт должен освободить ресурсы, которые занимал, не надеясь, что ОС сама что-то за него сделает.

Warstone
Это антипаттерн.

Наоборот - правильный подход. А судьи кто?

Warstone
Здравый смысл. Деструктор - дорого.

А уж в каком месте это делать - вопрос другой.

Андрей aka ti-an
А уж в каком месте это делать - вопрос другой.

Не надо говорить ОС - забери ресурсы во время завершения работы программы. Это глупость.

Warstone
Не надо говорить ОС - забери ресурсы во время заве...

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

Warstone
В контексте разговора человек говорил что он хочет...

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

Anton Petrusevich
бд была примером и надо сказать не самым удачным. ...

Не я придумал использовать ее в качестве примера. Временный фаил - удачный пример виртуального ресурса (то есть то что фаил временный ОС не знает, правда) и это, кстати, интересно, потому что я-бы, наверно, хотел какую-нибудь временную папку для каждого процесса на уровне ОС (инициализирующуюся по просьбе, конечно).

Warstone
Не я придумал использовать ее в качестве примера. ...

другой вариант, когда сервис, сообщивший о своём завершении, ускоряет процесс понимания сервером, что сервис на том конце сдох. например, зависший вебсокет может 30 секунд ждать понга. ну или там паблишер-подписчик, что нет прямого контакта

Anton Petrusevich
другой вариант, когда сервис, сообщивший о своём з...

О! И еще один человек, который не знает как работает TCP. Ответ на это был дан выше.

Warstone
О! И еще один человек, который не знает как работа...

человек знает. но бывает не только коннекты в пределах одного компьютера

Anton Petrusevich
человек знает. но бывает не только коннекты в пред...

И TCP/IP работает там точно так-же как и в пределах одного компьютера

Warstone
И TCP/IP работает там точно так-же как и в предела...

магически, ага. ни разу не видел коннектов зависших?

Anton Petrusevich
магически, ага. ни разу не видел коннектов зависши...

Представьте себе - обычно зависшие коннекты говорят о том что жопа в сети. А если у вас жопа в сети между сервером и СУБД, то это уже другой вопрос.

Vadim Goncharov
mktemp() же и так придуман, и не только он

так он не почистит за собой если приложение крашнется

Denis F
так он не почистит за собой если приложение крашне...

для этого много десятилетий файл удаляют сразу после открытия - реально будет удален после закрытия

Yuri Myasoedov
круто, а я не знал про такую штуку

на винде жил, где это не работает?

Yuri Myasoedov
man читал плохо :)

не админил? это ж классика вопросов "а куда делось место в /var если du показывает меньше"

Vadim Goncharov
для этого много десятилетий файл удаляют сразу пос...

Это не работает если у тебя файл создается в одном месте, а писать в него надо в другом, а хэндлер таскать не хочется

Denis F
Это не работает если у тебя файл создается в одном...

какой хэндлер? ядру пофигу, дескриптор файла общий на весь процесс

Denis F
Это не работает если у тебя файл создается в одном...

В этом случае файл можно удалить в том процессе, который будет писать. Это тоже не всегда удобно, но ещё часть проблем снимает.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта