Существует множество способов мониторинга файла конфигурации.
Напишите процедуру проверки конфигурации следующим образом:
use constant MIN_CHECK_DELAY => 5; #SECONDS
use constant CONFIG_FILE => '/etc/wtf.conf';
{
my $last_changed = 0;
my $last_check = 0;
sub load_config {
return if $last_check + MIN_CHECK_DELAY <= time;
return if (stat(CONFIG_FILE))[9] <= $last_check;
# Do stuff here.
return;
}
}
Главное, с чем вам следует быть осторожным, это то, что выне перезагружайте файл снова и снова, пока файл не изменится.
Теперь вызовите `load_config () в любом месте, где вам может потребоваться загрузка нового раунда конфигурации.Поскольку это всегда удается, вам не нужно тестировать или делать что-то умнее, чем разбрызгивать его в удобных местах.Как в верхней части вашего обработчика приложения.
Это отлично подойдет для выполнения таких задач, как включение входа в запущенный процесс или принудительная перезагрузка какого-либо модуля.Существует не так много случаев, когда масштабирование не укусит вас.
Знаете, если у вас есть куча машин, обслуживающих это, оно не будет масштабироваться.Вы должны были бы rsync файлы изменили файлы вокруг, или, что еще хуже, поместили их в монтирование NFS.
Вот радикальное представление: почему бы не использовать базу данных?
Я слышал, классные детиэкспериментируя с веб-приложениями на основе баз данных в настоящее время, и на самом деле они работают довольно хорошо.
На самом деле, самое интересное в программировании и построении систем - выбор между компромиссом дизайна.Могут быть некоторые крайние случаи, когда передача измененного файла является блестящим успехом, и мой изящный комментарий к базе данных показан для полной глупости.Не уверен, что это за вариант использования, но он может существовать. Вы знаете свой вариант использования. Попробуйте что-нибудь.Не бойся быть немного глупым.Иногда то, что кажется действительно глупым решением, оказывается на удивление элегантным.Однако, если идея окажется просто глупой, учитесь на опыте и двигайтесь дальше.