Задать вопрос
  • Хочу, чтобы в модуле виделись глобальные переменные скрипта, возможно ли?

    @xmolex Автор вопроса
    У вас глобальные переменные (our) в пакетах видятся? У меня нет. Если бы видились, не было бы вопроса.
  • Хочу, чтобы в модуле виделись глобальные переменные скрипта, возможно ли?

    @xmolex Автор вопроса
    Я сначала тоже так подумал, но потом производительность проверил в том и другом случае и решил решил на верхнем варианте остановиться.
  • Хочу, чтобы в модуле виделись глобальные переменные скрипта, возможно ли?

    @xmolex Автор вопроса
    К сожалению, проект предполагает использование множества копий сайта с использованием этих библиотек. Хочу вас поблагодарить, т.к. ваша мысль с обнулением помогла. Решил сделать таким образом:
    package lib::module;
    require Exporter;
    @ISA = qw(Exporter);
    
    my %SETTING = ();
    my $FLAG = $ENV{DOCUMENT_ROOT}; # в этой переменной храним путь к сайту на сервере
    @EXPORT = qw(&SiteSetting);
    
    use strict;
    use lib::database;
    
    sub SiteSetting {
       # получаем идентификатор настройки и выводим значение
       my $key = shift || return();
       # если путь вдруг поменялся, то обнуляем наши настройки, т.к. вклинился другой сайт
       if ($ENV{DOCUMENT_ROOT} ne $FLAG) {
         %SETTING = ();
         $FLAG = $ENV{DOCUMENT_ROOT};
       }
       if (exists($SETTING{$key})) {return($SETTING{$key});}
       else {
         my $sql = sql("SELECT key,value FROM setting WHERE key='$key';");
         if ($$sql[0] eq $key) {
            $SETTING{$key} = $$sql[1];
            return($SETTING{$key});
         } else {return();}
       }
    }
    

    Конечно, нам приходится постоянно сравнивать одну текстовую комбинацию с другой, а я сторонник минимизации процессорных операций, но всетаки это гораздо быстрее, чем каждый раз делать запрос к базе.
  • Хочу, чтобы в модуле виделись глобальные переменные скрипта, возможно ли?

    @xmolex Автор вопроса
    Такой модуль у меня и был раньше. Что-то вида:
    package lib::module;
    require Exporter;
    @ISA = qw(Exporter);
    
    my %SETTING = ();
    @EXPORT = qw(&SiteSetting);
    
    use strict;
    use lib::database;
    
    sub SiteSetting {
       # получаем идентификатор настройки и выводим значение
       my $key = shift || return();
       if (exists($SETTING{$key})) {return($SETTING{$key});}
       else {
         my $sql = sql("SELECT key,value FROM setting WHERE key='$key';");
         if ($$sql[0] eq $key) {
            $SETTING{$key} = $$sql[1];
            return($SETTING{$key});
         } else {return();}
       }
    }
    

    Тоесть когда нужна настройка, я подключаю эту библиотеку и делаю my $var = SiteSetting('KEY');
    Так-то все меня устраивало, но когда вдруг появился другой сайт с такой же библиотекой, то иногда данные стали проскакивать из другого сайта. Я конечно могу сделать идентификатор сайта и передавать что-то типа my $var = SiteSetting('$sites_id','KEY'), но ведь я всеравно не застрахован, что какой-нибудь жругой человек на этом сервере не станет использовать этот модуль и не назовет свой сайт таким же идентификатором.
  • Хочу, чтобы в модуле виделись глобальные переменные скрипта, возможно ли?

    @xmolex Автор вопроса
    Дело в том, что таких данных может быть довольно много: локальные настройки сайта, html шаблоны сайта, локализованные текстовые сообщения, да и мало ли что еще. Поэтому передача из функции в функцию не подходит.
  • nginx и мониторинг отдачи файлов

    @xmolex Автор вопроса
    Нет, в данном случае нет модели frontend — backend. Два равнозначных одинаковых сервера. Апач на 80, nginx на 8080.
  • nginx и мониторинг отдачи файлов

    @xmolex Автор вопроса
    Спасибо, попробую сделать NetTop'ом.
  • nginx и мониторинг отдачи файлов

    @xmolex Автор вопроса
    Как можно определить суммарную скорость передачи данных на UNIX системе (freebsd), если сайт также достаточно популярен и может быть немалым процентом общего трафика. Правда сайт отдается apache'ем, а файлы nginx'ом. Можно узнать общую скорость отдачи nginx'а?
  • nginx и мониторинг отдачи файлов

    @xmolex Автор вопроса
    Реально нужно. Хотим сделать очереди, которые будут создаваться в зависимости от качающих файл с определенного диска. Т.к. будут очереди, то нужно людям выводить примерное время, когда скачивание начнется, чтобы они решали, вставать в очередь или нет. Для этого нужно знать, примерную скорость отдачи файла, чтобы спрогнозировать время ожидания. Вообщем-то, узнать какой ip какой файл качает, можно и скриптом-обработчиком, а вот как узнать скорость отдачи? Можно, конечно, отдавать файл скриптом и высчитывать им, однако это сильно понизит реальную отдачу.