.
15 апреля 2016

Свои переменные в почтовых шаблонах Битрикса

Уже 3й пост за сегодня :) Долго не писал — был занят над проектом, да и в офлайне дела какие то всё появлялись
сейчас чуток освободился — и так сказать «всё что накопилось» ...

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

Итак — правим init.php
Публикую чистый код, т.к. всё предельно понято

AddEventHandler('main', 'OnBeforeEventSend', Array('myClass', 'OnBeforeEventSendHander'));
class myClass {
function OnBeforeEventSendHander(&$arFields, &$arTemplate) {
//получим сообщение
$mess = $arTemplate["MESSAGE"];
if(strpos($mess,'#MY_VARIABLE')) {
$arFields['MY_VARIABLE'] = "значение своей переменной, собственно при доступном массиве arFields - можно вытащить, что угодно";
}
}
}

рубрики: Bitrix, Полезности, Программирование | Комментарии (0)

15 апреля 2016

Настройка кэширования в Битриксе — что если не работает ?

Случай конечно можно сказать уникальный!
Но тем не менее решил я поделиться и таким опытом.

Обращаются ко мне с определённым ТЗ (не имеет отношение к сабжу) ... и я в процессе ознакомления с сайтом, замечаю приличные тормоза (до 10 сек) при открытии страниц.
А конктретно — страничка с компонентом видео потока ютуба. Посмотрел код — вызывается компонент step2use:youtube.subscribe.
Поковырял — смысл простой — тащит канал с ютуба, парсит, результат кэширует и выводит.
Ладно, 10 секунд для запроса канала с ютуба я ещё понимаю, но почему при повторномо открытии такие тормоза?
Проверил — кэш компонента включен! Чудеса!
Тут к бабке не ходи — кэш глючит!
Накинул самый простой скрипт для проверки кэша
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$cache = new CPHPCache();
if($cache->InitCache(3600, '12356356gt' , '/' )) {
echo "cache";
$res = $cache->GetVars();
$arResult = $res['arResult'];
} elseif ($cache->StartDataCache()) {
echo "no cache";
$arResult = array(1,2,3,4,5);
$cache->EndDataCache(array("arResult"=>$arResult));
}
?>

и тот хоть ты тресни выводит «no cache» — что говорит о том, что кэш не работает!

Далее посмотрел в dbconn.php и .setting.php — кэш настроен на memcashed (кэширование в памяти)
Перенастроил на файловый кеш — скрипт отработал и всё залетало!
Страничка стала генерироваться за 0.2 секунды ! ускорение в 50 раз!

Но всё же решил кэш настроить как и задумано на memcached!
дал рутом
#service restart memcashed
а самого сервиса то и нет! :)

Ну далее, всё как в книжке
# yum -y install memcached

настройки я сделал как в статье (чуть увеличил)
в файле /etc/sysconfig/memcached

MAXCONN = «1024» — количество одновременных подключений (по умолчанию 1024) — больше думаю не понадобится
CACHESIZE="2048" — объем выделяемой памяти для кеша (по умолчанию 64MB) — я дал 2 гига
USER="bitrix" — пользователь, от которого будет запущен memcache
OPTIONS="-t 16 -s /tmp/memcached.sock" — количество потоков и путь к сокету — у меня один домен на сервер, можно и через сокет — быстрее вроде

# /etc/init.d/memcached start
# chkconfig memcached on

ВСЕ залетало!
Страничка с компонентом место 10 секунд стала открываться за 0.1 секунду — т.е. прирост в скорости в 100 раз! :)

После экспериментов с кэшами я подумал, что не помешало бы сделаать полную очистку кэша (чтоб все с нуля и в память! и лишнее место на диске почистить)
Запустил чистку и ... сервер встал наглухо!
Смотрю top — 99% на mysqld
Поставил mytop — смотрю там удаление из таблицы b_cache_tag с параметром каким то (уже не помню)
Зашел в phpmyadmin — и охренел, таблица b_cache_tag — почти 30 миллионов записей и под 4 гигабайта размером!
Что это за наследие «прошлого» я разбираться не стал — очистил всю табличку
TRUNCATE TABLE b_cache_tag (таблица для управляемого кэша, а я все равно весь кэш чистить собрался)
и далее уже ещё раз из панели «очистить весь кэш» — на этот раз кэш нормально очистился, и теперь сайт живёт совсем другой жизнью :)

рубрики: Bitrix, Администрирование, Полезности | Комментарии (0)

7 апреля 2016

Битрикс — новая программа сертификации для партнеров

Пришло время подтверждать статус Сертифицированного партнёра 1С-Битрикс, и снова «новинки» от Битрикса.
Теперь нужно не просто онлайн курсы пройти, теперь нужно практически настоящий экзамен на проверку знаний сдать!
В билетах практические задания, на всё выделяется 4 часа
(по мне так это лучше чем подобный же экзамен, но на тестовые вопросы — это была бы полная жесть).
Для понятия «что-почём» в паблик предоставлены первые два билета.
Сдача ведётся «под камерами» :) в виртуальной среде без доступа во всемирную сеть (погуглить не получится).
Ну и ... экзамен платный :(
Тут всё подробно.
О виртуальной среде подробнее тут.

Я же пошел ставить виртуалку и пробоваться на первых билетах, а то время уже поджимает.

рубрики: Bitrix | Комментарии (0)

10 февраля 2016

Битрикс — массовое изменение цен раздела

Поражает, что до сих пор в коробке Битрикс интернет-магазинах (редакция Бизнесс и Малый Бизнесс) нет инструмента по массовому изменению цен.
Собственно, сваял «на коленке» скрипт изменения цен раздела
Может кому и пригодиться :)
Не забываем менять ID инфоблока с торг.предложениями.
Если тор.предложений нет, скрипт придётся чуток подкорректировать (вырезать серединку, где цикл по предожениям).

рубрики: Bitrix, Полезности | Комментарии (1)

28 января 2016

Анализ и оптимизация сайта Битрикс при медленной загрузке

Повторюсь с предыдущего поста:
Новое ТЗ — предоставлен сайт с временем открытия «морды» 10 секунд (в не авторизованном режиме).
В рамках этого ТЗ подразумеваю будет не один пост :)
Что понравилось — лицензия активна и актуальна, а движек не обновлялся с 2012года :)

Теперь к делу:
Пока у меня чистится БД приступлю к анализу загрузки странички — 10 сек это много!
Сначала решил глянуть FireBug-ом визуально в онлайн режиме в режиме Сеть — собственно, тормозит именно сам скрипт первый же GET отдаётся с кодом 200 размером 12кб и временем 10 секунд!
а в авторизованном режиме 16 сек!
Едем далее — авторизация, врубаем дебаг режим и обновляем страничку Читать полностью »

рубрики: Bitrix, Оптимизация | Комментарии (1)

28 января 2016

Битрикс оптимизация — большой размер b_sale_fuser

Новое ТЗ — предоставлен сайт с временем открытия «морды» 10 секунд (в не авторизованном режиме).
В рамках этого ТЗ подразумеваю будет не один пост :)
Что понравилось — лицензия активна и актуальна, а движек не обновлялся с 2012года :)
Конечно же, первое — решил обновиться до актуальной версии и создавая бэкап обратил внимание на очень большой размер БД.
Посмотрел phpmyadmin-ом и обратил внимание на 3 таблички с размерами более 200мб — в одной из них более 5.3 миллионов записей!
таблицы корзины
Поиск по запросу b_sale_fuser дал релевантные результаты
http://dev.1c-bitrix.ru/community/webdev/user/10337/blog/2323/
http://dev.1c-bitrix.ru/community/webdev/user/10337/blog/11317/
http://dev.1c-bitrix.ru/community/webdev/user/10337/blog/11202/
http://dev.1c-bitrix.ru/support/forum/forum6/topic50942/
http://marketplace.1c-bitrix.ru/solutions/alexkova.fileinspector/
В итоге пришел к выводу, что как раз из-за косяка в старом движке (господа — не экономьте на обновлениях!) эта проблема и всплыла.
Поставил инпектора — запустил очистку, процесс ОЧЕНЬ долгий — похоже на весь день :(
По хорошему кильнуть бы это всё не API Битрикса, а напрямую MySQL запросом — было бы быстрее в несколько порядков, но тут конечно риск накосопорить с базой ...

P.S. ТАК НЕ ДЕЛАТЬ !!!! (инфа добавлена после этих удаление и восстановления БД — вся информация детальная о заказах тоже грохнулась, хотя странно)
В общем ждал я ждал, ждал, ждал, ждал и очень мне это всё надоело — в час по чайной ложке :(
Проанализировал структуру таблиц и вот решение по чистке корзин на утро сегодняшнего дня (всё что ДО — долой)
-- чистим b_sale_fuser по дате
DELETE `b_sale_fuser` WHERE `DATE_INSERT` < '2016-01-28 00:00:00'

-- Запоминаем максимальный ID (пригодится ниже для удаления b_sale_basket_props ) в моём случае результат 720251 все айдишники ниже были созданы раньше - убить их
SELECT max(ID) FROM `b_sale_basket` WHERE `DATE_INSERT` < '2016-01-28 00:00:00'
-- Чистим саму b_sale_basket
DELETE b_sale_basket` WHERE `DATE_INSERT` < '2016-01-28 00:00:00'

-- Чистим b_sale_basket_props с помощью найденного выше ID
DELETE `b_sale_basket_props` WHERE `BASKET_ID` <= 720251

P.S.S.
В итоге поставил удаление Инспектором, торопиться не будем :)
И настроил запуск агента CSaleUser::DeleteOldAgent (30, 0); 10800 сек (раз в 3 часа)
Ещё контролируем Сохранять корзину (дней) — она тут Настройки > Настройки продукта > Настройки модулей > Интернет-магазин

рубрики: Bitrix | Комментарии (0)

27 января 2016

Битрикс — папка Local для удобства контроля версий

Новость не нова, но всё таки репост т.к. её полезность я осознал только озадачившись вопросом контроля версий в Битриксе.

Чтобы сделать жизнь разработчиков проектов удобнее, мы решили в рамках работ по новому ядру вынести основные файлы проекта из папки /bitrix в папку /local. Это позволит изолировать изменяющиеся файлы проекта от папки продукта. По сути, в исключения достаточно будет добавить одну папку /bitrix.

Какие папки обрабатываются в /local?

activities — действия БП;
components — компоненты;
gadgets — гаджеты рабочего стола;
modules — модули;
php_interface — init.php, папка user_lang;
templates — шаблоны сайтов, шаблоны компонентов, шаблоны страниц.

local

При обработке папок приоритет всегда у /local перед /bitrix. Это означает, что если в /local/templates/ и /bitrix/templates/ будут находиться шаблоны сайта с одинаковым названием, то подключится шаблон из /local.

Мы уверены, что это нововведение позволит более эффективно разрабатывать проекты.

рубрики: Bitrix | Комментарии (0)

Яндекс.Метрика