Битрикс, Memcached и PHP 5.6

Все манипуляции, описанные в статье производились на Ubuntu 14.04, для вашей ОС пути к файлам могут отличаться. Для выполнения действий из этой статьи вам потребуются root-привелегии.

Установка и настройка Memcached на сервере

Устанавливаем Memcached на сервер следующей командой:

apt-get install memcached

Настраиваем Memcached в файле /etc/memcached.conf:

# Запуск Memcached в качестве демона
-d
# Файл для записи логов
logfile /var/log/memcached.log
# Размер выделяемой оперативной памяти
-m 128
# Порт для соединения
-p 11211
# Имя пользователя, от которого будет работать Memcached
-u memcache
# IP-адрес, который будет слушаться. Если Битрикс и Memcached у вас на одном сервере, укажите 127.0.0.1
-l 127.0.0.1

После сохранения настроек перезапускаем Memcached:

/etc/init.d/memcached restart

Далее необходимо установить дополнительные модули для PHP, в том числе модуль для работы с Memcached. Внимание! Для PHP версии 5.6 пакет php-dev называется php5.6-dev, а не php5-dev (встречается во многих инструкциях по настройке Memcached). Соответственно, команда для PHP 5.6 будет выглядеть следующим образом:

apt-get install php5.6-dev libmemcache-dev

Для старших версий PHP 5 команда будет следующей:

apt-get install php5.6-dev libmemcache-dev

Устанавливаем модуль memcache:

pecl install memcache

После установки модуля memcache обратите внимание на пути к установленным файлам, выведенными в процессе установки. В нашем случае это /usr/include/php/20131226 — здесь нужно обратить внимание на директорию, название которой представляет собой 8 последовательных цифр — 20131226. Они должны совпадать с номером версии вашего PHP Api. Узнать вашу версию можно в phpinfo() — строка PHP Extension или командой phpize -v.

Кроме этого, стоит также обратить внимание на путь установки memcache.so до этих 8 цифр, в последних строках вывода установки:

Build process completed successfully
Installing '/usr/lib/php/20131226/memcache.so'

В нашем случае файл memcache.so должен находиться в директории /usr/lib/php5/20131226/, по этому нам нужно его туда скопировать:

cp /usr/lib/php/20131226/memcache.so /usr/lib/php5/20131226/memcache.so

Далее необходимо добавить запись «extension=memcache.so» в ваш php.ini. В нашем случае он находится в /etc/php5/apache2/. После чего нужно перезапустить Apache:

/etc/init.d/apache2 restart

Настройка Memcached в Битриксе

До версии Bitrix 14.0 настройка производилась в файле dbconn.php (находится в директории /bitrix/php_interface/), в более свежих редакциях настройка производится в файле .settings.php (находится в директории /bitrix/). Дабы исключить какие-либо несостыковки, рекомендуется произвести настройки в обеих файлах.

В файле .settings.php

'cache' => array(
    'value' => array(
        'type' => 'memcache',
        'memcache' => array(
            'host' => '127.0.0.1',
            'port' => '11211'
        ),
        'sid' => $_SERVER["DOCUMENT_ROOT"]."#01"
    ),
    'readonly' => false,
),

В файле dbconn.php

define("BX_CACHE_TYPE", "memcache");
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01");
define("BX_MEMCACHE_HOST", "127.0.0.1");
define("BX_MEMCACHE_PORT", "11211");

Как проверить, что Memcached работает и подключен к Битриксу?

Проверить, работает ли Memcached на сервере, можно командами командной строки top, iotop, htop и им подобными. В выводимыми ими списками нужно искать memcache/memcached.

Проверить, подключен ли модуль PHP можно функцией phpinfo(). В выводимой ей информацией нужно искать блок memcache. Внимание! Не memcached (разница в последней букве d), т.к. Битрикс этот модель не поддерживает.

В самом Bitrix проверить, подключен ли Memcached, можно в 2 местах:

  1. Панель производительности.
    Находится в «Настройки» -> «Производительность» -> «Панель производительности» -> вкладка «Битрикс» -> настройка «Хранение кеша». В колонке «Значение» должно стоять memcache.
  2. Композитный сайт.
    Находится в «Настройка» -> «Настройки продукта» -> «Композитный сайт» -> вкладка «Настройки» -> блок «Механизм хранения кеша» -> настройка «Хранить кеш в». Если в этом выпадающем списке можно выбрать memcached, значит он подключен, в противном случае в скобках к этому пункту будет написано, что memcached не подключен. После выбора пункта с Memcached можно указать хост и порт и проверить соединение.

Что бы проверить работу непосредственно кеширования, можно написать простенький скрипт. Примеров достаточно на просторах интернета.

Добавить комментарий

Битрикс — проблемы с выводом в разделы инфоблоков при включенном ЧПУ

И снова пару слов о 1C-Bitrix. Данная статья является скорее памяткой, призванной указать на типичные ошибки, допускаемые при создании древовидной структуры инфоблоков. Ошибки эти на первый взгляд кажутся элементарными, но допустить их очень просто.

В этот раз речь пойдет о ситуации, когда при включенном ЧПУ не выводятся элементы в разделы (категории). При этом на самой странице раздела выводится текст «Элемент не найден!«.

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

Что же касается самих разделов, то тут проблема кроется в параметре адреса страницы раздела. Этот параметр должен быть #SECTION_CODE_PATH#, а не #SECTON_CODE# или #SECTION_ID# — вот и весь секрет.

Битрикс - проблемы с выводом в разделы инфоблоков при включенном ЧПУ

Добавить комментарий

Русский язык в RokPad 2.1.9

Русский язык в RokPad 2.1.9

Мы в OmniSmart щепетильно подходим ко всем деталям разработки сайтов. В том числе это касается и панели администрирования сайта. Мы старательно переводим все используемые сторонние расширения, а так же адаптируем их под конкретную задачу — заботимся не только о посетителях сайта, но и об администраторах, дабы сделать их работу максимально комфортной.

С недавних пор при разработке сайтов на CMS Joomla мы стали использовать в качестве визуального редактора RokPad — отличное многофункциональное решение, позволяющее быстро форматировать текст, не оставляя при этом в нем лишнего мусора (что присуще практически всем визуальным редакторам). Более подробно о RokPad вы можете узнать на сайте разработчика, а мы в свою очередь хотим поделиться нашей локализацией самого редактора.

Русский язык в RokPad 2.1.9

К сожалению, плагин использует языковые файлы только для страницы настроек, но не для самого редактора. По этой причине для руссификации RokPad необходимо заменить сам файл плагина rokpad.php, который находится в /plugins/editors/rokpad/, а так же файл стилей rokpad.css, находящийся в /plugins/editors/rokpad/assets/styles/ — это нужно для переопределения ширины блоков, т.к. переведенный текст занимает больше места. На данный момент частично не переведена только информация о горячих клавишах, используемых в плагине.


Добавить комментарий

Битрикс — как закрыть публичную часть сайта для доступа?

В этот раз поговорим немного о 1C-Bitrix. Про эту систему написано много, как плохого, так и хорошего, но сейчас не об этом. Эта статья первая их серии как о системе в целом, так и о способах решения конкретных проблем. В качестве подопытного будем использовать 15 версию Битрикса. В данном случае рассмотрим задачу закрытия публичной части сайта.

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

Самый простой способ — это закрыть публичную часть через панель администрирования. Для этого заходим в «Настройки» -> «Настройки продукта» -> «Настройки модулей» -> «Главный модуль» -> блок «Служебные процедуры» -> вкладка «Публичная часть» -> кнопка «Закрыть доступ для посетителей».

Закрыть публичную часть сайта в Битрикс

После нажатия на заветную кнопку доступ к публичной части будут иметь только пользователи, имеющие полный доступ к главному модулю. Если права доступа групп пользователей после установки системы не изменялись, то доступ к публичной части будут иметь только пользователи из группы «Администраторы». К слову, если вы разлогинились, то что бы попасть в панель администрирования достаточно дописать к адресу вашего сайта /bitrix/admin/.

Для всех остальных пользователей, как зарегистрированных, так и незарегистрированных, будет показываться заглушка. Если ее необходимо стилизовать под дизайн сайта, то это можно сделать в файле site_closed.php, который находится в /bitrix/modules/main/include/.

Но что, если нужно закрыть публичную часть сайта для доступа только незарегистрированных пользователей? Например, доступ к публичной части не помешал бы контент-менеджеру, а в некоторых случаях и заказчику. Но использовать для этих целей права доступа группы «Администраторы» нецелесообразно по ряду причин, главная из которых — вмешательство в процесс разработки сайта. Даже если мы создадим для таких пользователей отдельную группу, все равно придется выставить полный доступ к главному модулю, т.е. данный способ проблему не решает.

Для того, что бы решить поставленную задачу нам необходимо отредактировать файл prolog_after.php, находящийся в /bitrix/modules/main/include/. Ищем 68 строчку и условие if(COption::GetOptionString("main", "site_stopped", "N")=="Y" && !$USER->CanDoOperation('edit_other_settings')) по которому отображается заглушка вместо публичной части сайта. Тут нас интересует часть !$USER->CanDoOperation('edit_other_settings'), условие по которой выполняется, если пользователь не имеет полный доступ к главному модулю. Для того, что бы открыть доступ для всех зарегистрированных пользователей нужно всего лишь заменить значение edit_other_settings («Полный доступ») на edit_own_profile («Изменение своего профиля»).

Но что, если и этого нам не достаточно и необходима более точная настройка доступа? Аналогичным образом можно подставить любое другое значение доступа. Значения можно найти в БД в таблице b_operation, перечень уровней доступа в таблице b_task, связующая таблица b_task_operation. CanDoOperation — это метод класса CUser модуля main, так же можно использовать другие методы класса, описание которых можно найти в официальной документации для разработчиков, а также используя модуль «Живое описание АПИ» или его онлайн-версию.

Добавить комментарий

У нас прибавление: конвертер таблиц Excel и Word в HTML

Конвертер таблиц Excel в HTML

Сегодня у нас на сайте появился новенький конвертер таблиц из программ типа Excel и Word. Помимо своей основной функции — перевода таблиц в HTML — он умеет добавлять к таблице класс и заменять первые строки и колонки с <td> на <th>. Полученный результат легко читаем и прост в использовании.

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

Сейчас инструмент лишь только появился на свет и ему еще есть куда расти. В планах опциональное добавление <thead> и <tfoot>, настройка атрибутов и стилей, возможность просмотра полученного результата, как если бы он уже был встроен в страницу сайта.

Конвертер доступен абсолютно бесплатно. Будем рады, если он сможет кому-то облегчить его нелегкий труд так же, как он помогает в работе нам — пользуйтесь.

Добавить комментарий

Первый

Поздравляем всех потенциальных читателей с возможностью воспринять информацию из нашего вновь открывшегося блога. Welcome!

Добавить комментарий