Skip to content

Instantly share code, notes, and snippets.

@fuckuppro
Created February 18, 2016 10:58
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save fuckuppro/052bf3685d73a3092938 to your computer and use it in GitHub Desktop.
Save fuckuppro/052bf3685d73a3092938 to your computer and use it in GitHub Desktop.
Bitrix(d7). File .settings.php API
<?php
return array (
/*Отвечает за кодиорвку*/
'utf_mode' =>
array (
'value' => true,
'readonly' => true,
),
/*Отвечает за кодиорвку по умолчанию*/
'default_charset' =>
array (
'value' => 'cp866',
'readonly' => false,
),
/*Отключение сброса кэша, для решения некоторых проблем с php Zend Optimizer+*/
'no_accelerator_reset' =>
array (
'value' => false,
'readonly' => false,
),
/*Установка константы BX_HTTP_STATUS используется в Configuration::wnc*/
'http_status' =>
array (
'value' => true,
'readonly' => false,
),
/*Время кэширования в секундах*/
'cache_flags' =>
array (
'value' =>
array (
'config_options' => 3600,
'site_domain' => 3600,
),
'readonly' => false,
),
/*Отвечает за куки на сайте*/
'cookies' =>
array (
'value' =>
array (
'secure' => false,
'http_only' => true,
),
'readonly' => false,
),
/*Отвечает за обработку и логирование ошибок*/
'exception_handling' =>
array (
'value' =>
array (
'debug' => true,
'handled_errors_types' => 20853,
'exception_errors_types' => 20853,
'ignore_silence' => false,
'assertion_throws_exception' => true,
'assertion_error_type' => 256,
'log' =>
array (
'settings' =>
array (
'file' => NULL,
'log_size' => NULL,
),
),
),
'readonly' => false,
),
/*Отвечает за соединения с базами данных*/
'connections' =>
array (
'value' =>
array (
'default' =>
array (
'className' => '\\Bitrix\\Main\\DB\\MysqlConnection',
'host' => '',
'database' => '',
'login' => '',
'password' => '',
'options' => 2,
),
),
'readonly' => true,
),
/*Отвечает за кэширование*/
'cache' =>
array (
'value' =>
array (
'type' => 'memcache', /*memcache, apc, xcache, files, none*/
'sid' => '',
'memcache' =>
array (
'host' => '127.0.0.1',
),
),
'readonly' => false,
),
);
<?php
return array (
'cache' => array(
'value' => array (
'type' => 'memcache',
'memcache' => array(
'host' => 'unix:///tmp/memcached.sock',
'port' => '0'
),
'sid' => $_SERVER["DOCUMENT_ROOT"]."#01"
),
),
);

Файл настроек .settings.php (/bitrix/.settings.php)


Настройки могут задаваться в файле .settings.php и .settings_extra.php. Базовый файл настроек содержит неизменные настройки, к которым есть API. Файл .settings_extra.php может содержать произвольный код, который меняет настройки динамически. Соответственно к нему нет API.

Кодировка

Пример:

  /*Отвечает за кодиорвку*/
  'utf_mode' => 
  array (
    'value' => true,
    'readonly' => true,
  ),
  • readonly - ключ означает, что нельзя изменить значение через API.
  • value - true, если используется utf и false в обратном случае.

Если задана другая кодировка (не UTF-8):

  /*Отвечает за кодиорвку*/
  'utf_mode' => 
  array (
    'value' => false,
    'readonly' => true,
  ),
  • value - false, то есть не используется UTF-8
  /*Отвечает за кодиорвку по умолчанию*/
  'default_charset' => 
  array (
    'value' => 'cp866',
    'readonly' => false,
  ),
  • value - указание кодировки по умолчанию

Кэширование

Пример:

  /*Отвечает за кэширование*/
  'cache' => 
  array (
    'value' => 
    array (
      'type' => 'memcache', /*memcache, apc, xcache, files, none*/
      'sid' => '',
      'memcache' => 
      array (
        'host' => '127.0.0.1',
      ),
    ),
    'readonly' => false,
  ),

Так же доступных специальные флаги для кэширования опций модулей:

  /*Время кэширования в секундах*/
  'cache_flags' => 
  array (
    'value' => 
    array (
      'config_options' => 3600,
      'site_domain' => 3600,
    ),
    'readonly' => false,
  ),
  • readonly - ключ означает, что нельзя изменить значение через API.
  • site_domain - Время кэширования куки в секундах
  • config_options - Время кэширования опций модулей в секундах

Обработка ошибок

Пример:

'exception_handling' => array (
    'value' => array (
      'debug' => false,
      'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE,
      'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_USER_WARNING & ~E_USER_NOTICE & ~E_COMPILE_WARNING & ~E_DEPRECATED,
      'ignore_silence' => false,
      'assertion_throws_exception' => true,
      'assertion_error_type' => 256,
      'log' => array (
        'settings' => array (
          'file' => 'bitrix/modules/error.log',
          'log_size' => 1000000,
        ),
      ),
    ),
    'readonly' => false,
  ),
  • readonly ключ означает, что нельзя изменить значение через API.
  • debug - Ключ отвечает за то, будет ли выведена ошибка на страницу в браузере.
  • handled_errors_types - Tипы ошибок, которые система отлавливает.
  • exception_errors_types - Типы ошибок, при которых система выбрасывает исключение.
  • ignore_silence - Ключ отменяет действие оператора управления ошибками (@).
  • log - В ключе задаются параметры логирования ошибок.
  • assertion_throws_exception - Включить поддержку assert
  • assertion_error_type - Какие типы ошибок обрабатывать для assert

Если в корне сайта лежит файл error.php и выключен вывод ошибок на экран, то этот файл будет подключен в случае возникновения необработанного исключения.

Логирование

Пример:

'log' => array (
   'settings' => array (
      'file' => 'bitrix/modules/error.log',
      'log_size' => 1000000,
   ),
),
  • readonly ключ означает, что нельзя изменить значение через API.
  • file - Путь к файлу лога относительно корневой папки сайта.
  • log_size - Максимальный размер файла лога в байтах.

Пример:

'log' => array(
   'class_name' => 'MyLog',
   'extension' => 'MyLogExt',
   'required_file' => 'modules/mylog.module/mylog.php'
   'settings' => array(
    ),
),
  • class_name - Имя класса (с указанием namespace).
  • extension - PHP расширение необходимое для исползования.
  • required_file - Файл, который необходим дляиспользования (например автозагрузка).
  • settings - массив настроек.

Пример использования своего собственного логера (в качестве примера взят monolog-adapter):

return array(
    'exception_handling' => array(
        'value' => array(
            'log' => array(
                'class_name' => '\Bex\Monolog\ExceptionHandlerLog',
                'settings' => array(
                    'logger' => 'app'
                ),
            ),
        ),
        'readonly' => false
    ),
    'monolog' => array(
        'value' => array(
            'handlers' => array(
                'default' => array(
                    'class' => '\Monolog\Handler\StreamHandler',
                    'level' => 'DEBUG',
                    'stream' => '/path/to/logs/app.log'
                ),
                'feedback_event_log' => array(
                    'class' => '\Bex\Monolog\Handler\BitrixHandler',
                    'level' => 'DEBUG',
                    'event' => 'TYPE_FOR_EVENT_LOG',
                    'module' => 'vendor.module'
                ),
            ),
            'loggers' => array(
                'app' => array(
                    'handlers'=> array('default'),
                ),
                'feedback' => array(
                    'handlers'=> array('feedback_event_log'),
                )
            )
        ),
        'readonly' => false
    )
);

Соединения с базами данных

/*Отвечает за соединения с базами данных*/
  'connections' => 
  array (
    'value' => 
    array (
      'default' => 
      array (
        'className' => '\\Bitrix\\Main\\DB\\MysqlConnection',
        'host' => '',
        'database' => '',
        'login' => '',
        'password' => '',
        'options' => 2,
        'handlersocket' => array (
           'read' => 'fast'
         ),
      ),
    ),
    'fast' => array (
      'className' => '\Bitrix\Name\Data\HsphpReadConnection',
      'host' => 'localhost:31006',
     ),
    'readonly' => true,
  ),
  • readonly ключ означает, что нельзя изменить значение через API.
  • className - имя класса, которое отвечает за работу с базой данных.
  • host - хост, для соединения с базой данных
  • database - имя базы данных
  • password - пароль к базе данных
  • handlersocket - указывается какое соединение использовать. Необходимо создать подключение, где будут указаны класс и хост
  • options - параметры соединения, например 1 - постоянное соединение, 2 - простое соединение, 3 - это оба:
'options' =>  ((!defined("DBPersistent") || DBPersistent) ? 1 : 0) | ((defined("DELAY_DB_CONNECT") && DELAY_DB_CONNECT === true) ? 2 : 0)

Обычное соединение устанавливается каждый раз во время выполнения страницы при первом обращении к базе данных. Установленное соединение освобождается (в большинстве случаев и закрывается) после завершения страницы.

Постоянное соединение (функции PHP обычно называются *_pconnect) устанавливается один раз при первом обращении к базе данных и при повторных обращениях, даже из других страниц, используются уже открытые соединения к базе данных.

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

Рекомендуется вместо \\Bitrix\\Main\\DB\\MysqlConnection использовать \\Bitrix\\Main\\DB\\MysqliConnection

Обращение к другим соединениям с базами данных:

/*  connection_name - имя соединения, указанное в .settings.php. 
/*  Bitrix использует соединение по умолчанию default
*/
$connection = Bitrix\Main\Application::getConnection('connection_name');

Подробнее о базах данных в 1С - Битрикс

Дополнительно

  /*Отключение сброса кэша, для решения некоторых проблем с php Zend Optimizer+*/
  'no_accelerator_reset' => 
  array (
    'value' => false,
    'readonly' => false,
  ),

Применение данной настрйоки я не нашёл за исключением решения проблем с php Zend Optimizer+

  /*Установка константы BX_HTTP_STATUS используется в Configuration::wnc*/
  'http_status' => 
  array (
    'value' => true,
    'readonly' => false,
  ),
  

Применение данной настройки находится в методе, который формирует файл .settings.php (Configuration::wnc), так же в фигуриует в методе CHTTP:SetStatus()

Ссылки по теме

Bitrix

Bitrix-expert

Bxapi.ru

Git

PHP

<?php
use Bitrix\Main\Config as Conf;
$configuration = Conf\Configuration::getInstance();
//get
$handl = $configuration->get('exception_handling');
//add
$configuration->add('exception_handling', $handl);
//save config to file
$configuration->saveConfiguration();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment