Блог

Установка memcached в BitrixVM и настройка работы в Битрикс

07.07.2015
Устанавливаем memcached на сервер. Так как BitrixVM основан на CentOS, то команда установки выглядит так:
yum -y install memcached
В файле /etc/sysconfig/memcached заменяем строку OPTIONS на:
OPTIONS="-l 127.0.0.1"
Добавляем memcached в автозагрузку:
service memcached start
chkconfig memcached on
Ставим библиотеку PHP-memcache:
yum -y install php-pecl-memcache
Последнее возможно не понадобится, т.к. в виртуальной машине Битрикс этот модуль есть по-умолчанию.
С установкой всё. Можно еще перезапустить apache.

Настройка Битрикса на использование кеширования в memcache сводится к редактированию файла /bitrix/.settings.php. В массиве настроек нужно прописать следующие параметры кеширования:
'cache' => array(
    'value' => array (
        'type' => 'memcache',
        'sid' => $_SERVER["DOCUMENT_ROOT"]."#site01",
        'memcache' => array(
            'host' => '127.0.0.1',
            'port' => '11211',
        ),
    ),
    'readonly' => false,
),
Всё. Теперь в панели производительности Битрикс (http://site.com/bitrix/admin/perfmon_panel.php) должны увидеть:

SEO в Битриксе

26.01.2015
Работа с шаблонами
use Bitrix\Iblock\InheritedProperty; 
//ООП  ElementTemplates или SectionTemplates или IblockTemplates )) 
$ipropTemplates = new InheritedProperty\ElementTemplates($IBLOCK_ID, $ELEMENT_ID);
//Установить шаблон для элемента 
$ipropTemplates->set(array(
         "MY_PROP_CODE" => "{=this.Name}",
         "SOME_CODE" => "", //Удалить шаблон
));
//Получить шаблоны для "редактирования" 
$templates = $ipropTemplates->findTemplates();
//Удалить все собственные шаблоны  элемента 
$ipropTemplates->delete();

//ООП  ElementValues или SectionValues или IblockValues )) 
$ipropValues = new InheritedProperty\ElementValues($IBLOCK_ID, $ELEMENT_ID);
//Получить значения 
$values = $ipropValues->getValues();
echo $values ["MY_PROP_CODE"]; 
//Сбросить кеш 
$ipropValues->clearValues(); 
Генерация по шаблону
use Bitrix\Iblock\Template;
//Подключение модуля инфоблоков.
if (\Bitrix\Main\Loader::includeModule('iblock'))
{
      //Задаём шаблон.
      $template = "Name: {=this.Name}. Code:{=this.code}";
      //Исходные данные будем брать из элемента.
      $entity = new Template\Entity\Element($ELEMENT_ID);
      //Не забываем про безопасность.
      echo \Bitrix\Main\Text\String::htmlEncode(
              //Вычисляем значение по шаблону.
              Template\Engine::process($entity, $template) 
     );
}
Полезные шаблоны:
{=this.property.CML2_LINK.property.ONSTORE} - вывод в SEO-шаблоне элемента SKU значения свойства c кодом ONSTORE товара, к которому этот SKU привязан через свойство с кодом CML2_LINK.

Полезные команды для создания бэкапов вручную из консоли

19.01.2015

База данных

Делаем бекап БД
mysqldump -h localhost -u USER -p'PASSWORD' DATABASE > /path/to/file/dump.sql
Создаём бекап и сразу его архивируем
mysqldump -h localhost -u USER -p'PASSWORD' DATABASE | gzip > /path/to/outputfile.sql.gz
Заливаем бекап в базу данных
mysql -h localhost -u USER -p'PASSWORD' DATABASE < /path/to/dump.sql
Заливаем архив бекапа в базу
gunzip < /path/to/outputfile.sql.gz | mysql -h localhost -u USER -pPASSWORD DATABASE
Или через mysql-console
mysql> use database;
mysql> source database.sql
Прямой перенос данных из одной БД в другую
mysqldump -h SERVER1 -u USER1 -p'PASSWORD1' database1 | mysql -h SERVER2 -u USER2 -p'PASSWORD2' database2

Файлы

Создание ZIP-архива директории
zip -r file.zip folder_to_zip
Распаковка ZIP-архива
unzip filenname.zip
Создание tar.gz-архива директории
tar -cvzf filename.tar.gz folder
Распаковка tar.gz
tar -xzf rebol.tar.gz
Прочие полезные bash-кейсы были разобраны в этом видео:

Изменение прав на файлы и папки:
find /home/bitrix/ext_www/site.com/. -type f -print | xargs chmod 644
find /home/bitrix/ext_www/site.com/. -type d -print | xargs chmod 755

Поиск в по содержимому файлов:
egrep -ir --include=*.{php,html,js} "(строка_для_поиска)" . 

Штатные функции отладки в 1С-Битрикс

13.08.2014
Запись отладочной информации в файл:
Bitrix\Main\Diag\Debug::writeToFile(array('ID' => $id, 'fields'=>$fields ),"","/debug.txt");
Bitrix\Main\Diag\Debug::dumpToFile(array('ID' => $id, 'fields'=>$fields ),"","/debug.txt");
Учет времени выполнения кода:
Bitrix\Main\Diag\Debug::startTimeLabel('test');
// some code
Bitrix\Main\Diag\Debug::endTimeLabel('test');
$result = Bitrix\Main\Diag\Debug::getTimeLabels();
var_dump($result);
Получение текущей метки времени:
Bitrix\Main\Diag\Helper::getCurrentMicrotime();
Получение стэка вызова функций.
Bitrix\Main\Diag\Helper::getBackTrace($limit = 0, $options = null);
SQL Tracker
$connection = \Bitrix\Main\Application::getInstance()->getConnectionPool()->getConnection();
$connection->startTracker($reset);
// $reset - флаг перезапуска трэкера
//some code with SQL
//$query = $rs->getTrackerQuery()->getSql();// получаем SQL-запросы в строку
$connection->stopTracker();
print_r($connection->getTracker());// вывод информации из трэкера, если нужно

Отладочная информация при помощи CDebugInfo:
$debug = new CDebugInfo();
$debug->Start();
// код
$debug->Stop();
$arDebug['run_time']   = round($debug->arResult['TIME'], 4);
$arDebug['sql_time']   = round($debug->arResult['QUERY_TIME'], 4);
$arDebug['sql_count']   = $debug->arResult['QUERY_COUNT'];

Полезные модули из Маркетплейса

14.05.2014
Подборка модулей, которые пригодятся на любом типе проекта и сэкономят разработчику кучу времени.

Многосайтовойть на доменах

25.03.2014
Если создаются два сайта на доменах site.com и new.site.com, то для правильного определения сайта Битриксом нужно установить у второго значение сортировки меньшее, чем у первого.
Так пишет техподдержка Битрикса:
У сайта на поддомене поле сортировки должно быть меньше, чем у сайта на домене.
Так написано в учебном курсе:
Чтобы избежать проблем в случае, когда доменные имена различных сайтов частично совпадают, следует использовать индекс сортировки сайтов. Тогда при выборе сайта по доменному имени произойдет сравнение индекса сортировки: будет использован сайт с меньшим значением индекса. Если значение индекса сортировки совпадает, то проверка будет производиться по длине доменного имени.
Записи 11 - 20 из 37
Начало | Пред. | 1 2 3 4 | След. | Конец