$preconf

Материал из Eludia
Перейти к: навигация, поиск

$preconf — это глобальный хэш, содержащий значения параметров, специфические для текущей инсталляции приложения. Как правило, он определяется при загрузке Eludia.pm, в качестве 3-го параметра Eludia::Loader::import, который обычно вызывается из <perl>-секции httpd.conf.

В первых прототипах Eludia.pm все глобальные параметры читались из хэша $conf, причём содержимое $conf, определённое в Config.pm, копировалось поверх $preconf, который мыслился как "предварительная конфигурация" и потому был так назван.

Однако, вскоре выяснилось, что каждый отдельный параметр должен быть определён либо в $preconf, либо в $conf. Так, например, параметры подключения к БД имеют смысл только для одного экземпляра и должны быть только в $preconf, а параметры, задающие логику ядра, могут определяться только в библиотеках приложения.

Итак, на сегодня понятие "предварительная конфигурация" не имеет смысла, однако имя переменной $preconf используется до сих пор.

Ниже приведены параметры глобальной конфигурации, используемые Eludia.pm. В каждом приложении могут быть собственные параметры, также определяемые в $preconf.

БД

db_dsn
строка подключения к БД
db_user
пользователь
db_password
пароль

MySQL

db_charset
национальная кодировка. По умолчанию: cp1251.
db_default_storage_engine
Тип таблиц, используемых в базе данных. InnoDB или MyISAM. Влияет на установку уровня изолированности транзакций. Используется в качестве значения параметра ENGINE при создании таблиц моделью.

Oracle

db_schema
имя схемы. Только на случай отличия от db_user.
db_cache_statements
кэширование планов запросов (только для Oracle). Если истина, то вместо prepare используется метод prepare_cached. Это увеличивает производительность, но требует дополнительной настройки Oracle, иначе может вызывать ошибку ORA-01000.
no_model_update
если истина, то активная схема данных не используется. Использовалась от безысходности на некоторых платформах, где DBD::Oracle вызывал крах процесса при получении данных типа LONG, а именно такого типа получаются значения COLUMN_DEF.

Ядро

core_auth_cookie
если определена, то текущий номер сессии сохраняется в cookie с именем sid и восстанавливается из неё. Значение этой опции соответствует времени жизни cookie. Например, при значении '+1М' cookie будет храниться 1 месяц. Синтаксис — как в соответствующем разделе CGI.pm.
core_debug_profiling
если 1, то в STDERR пишется детальная информация о времени исполнения каждой фазы обработки запроса. Если 2, то эта информация накапливается в БД и доступна на экране с типом _benchmarks.
core_debug_sql
если 1, то в STDERR пишется детальная информация о формировании запросов функцией sql.
core_no_log_mac
если истина (по умолчанию), то ядро не пытается определить MAC-адрес пользователя для записи в протокол. Иначе (то есть при явно прописанном значении 0) на каждый запрос вызывается команда arp и из её результата вычисляется MAC-адрес для IP текущего клиента. Результат возможно получить только если клиент находится в том же сегменте сети, что сервер.
core_memory_limit
максимальный допустимый объём памяти для экземпляра процесса (в мебибайтах). Если это значение оказывается превышенным на этапе инициализации, загрузка прерывается. Если же такое происходит после исполнения очередного запроса, то текущий процесс корректно завершается.
core_fix_tz
если истина, то при заходе пользователя в систему запоминается его часовой пояс (вычисляется на клиенте при помощи javaScript), точнее, сдвиг локального времени пользователя относительно серверного. Далее эта информация учитывается при исполнении запросов (sql_do) и форматировании дат (__d).
session_timeout
время жизни сессии, в минутах.
no_keepalive
если истина, то при открытом браузере сессия автоматически НЕ поддерживается. По умолчанию (при пустом значении) до истечения session_timeout WEB-интерфейс посылает специальный запрос, после чего таймер перезапускается.

HTTP

core_gzip
если истина, то при возможности используется gzip-кодирование HTTP-ответа.
core_mtu
пороговое значение длины HTML, меньше которого gzip-кодирование не применяется даже при установленной $preconf -> {core_gzip}.
core_no_morons
если не установлена, то выполняется глобальная замена 'window.open' на маскирующий вызов 'nope'. Эта мера предусмотрена в связи с парадоксальным поведением некоторых HTTP proxy.
static_site
Отдельный HTTP-адрес для статики.
use_cgi
если истина, то использование API mod_perl (Apache::*) блокируется и вместо него применяется CGI.pm.

Интерфейс

core_skin
имя $_SKIN'а по умолчанию.
core_show_dump
если истина, то в интерфейсе доступны ссылки с &__dump=1 (пункт меню или Ctrl + RightClick). По этим ссылкам открываются экраны с отладочной информацией (все данные, извлечённые Content-процедурой, в формате Data::Dumper).
core_unblock_navigation
если истина, то в режиме редактирования ссылки с меню открываются в немодальных диалоговых окнах. По умолчанию они в этом режиме блокированы.
core_skip_boot
если ложь (по умолчанию), то в качестве первого экрана приложение выдаёт пустую страницу (type=_boot) с проверочным js-кодом, который при загрузке в корректно настроенный браузер немедленно перенаправляет клиента на экран авторизации (type=logon). Устанавливать эту опцию и пропускать проверочную страницу имеет смысл только при глубокой отладке или в существенно нестандартных приложениях.
lang
язык по умолчанию. Если не указан, считается 'RUS'.

Внешние ресурсы

ldap
параметры LDAP-сервера.
mail
параметры SMTP-сервера.
master_server
параметры боевого сервера, прописываемые в конфигурации соответствующего тестового для синхронизации при помощи

Eluda::Install::sync_down.

peer_name, peer_servers
параметры для серверного пиринга (обмен информацией между несколькими приложениями).

Неподдерживаемые параметры

core_multiple_roles
позволял поддерживать несколько ролей у одного пользователя, при этом в рамках одной сессии предлагалось выбрать единственную роль. В настоящее время, как правило, роль (id_role) у пользователя одна, однако у него может быть множество опций, соответствующих различным разделам приложения.
core_no_xml
блокировал использование $_SKIN'а XMLDumper.
core_path
предназначался для явного указания одной из нескольких одновременно установленных версий ядра.
subset, subset_names
имели отношение к идее независимого лицензирования отдельных частей приложения.