Используем Bitrix API в своих скриптах
Что нужно, чтобы использовать Bitrix API? Например в своих скриптах, в скриптах, запускаемых по расписанию и тд и тп.
Следующий пример — скрипт для запуска по cron.
Пишем в начале своего файла следующее.
1 2 3 4 5 6 7 8 9 10 11 12 |
$root = $_SERVER['DOCUMENT_ROOT'] = realpath(dirname(__FILE__) . '/../../../../'); define('LANG', 's1'); define('SITE_ID', 's1'); define("NO_KEEP_STATISTIC", true); require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php"); CModule::IncludeModule('main'); @set_time_limit(30000); ini_set('max_execution_time', 30000); |
Опишу поподробнее.
В начале файла определяем переменную $root и заодно $_SERVER[‘DOCUMENT_ROOT’] относительно этого скрипта.
Зачем определять $_SERVER[‘DOCUMENT_ROOT’]? Всё потому что при запуске срипта по cron переменная $_SERVER[‘DOCUMENT_ROOT’] не инициализируется, так как скрипт исполняется сам по себе при помощи интерпретатора php и знать ничего не знает о веб-сервере, корневной директориии и прочем.
Далее определяем константы LANG и NO_KEEP_STATISTIC. LANG это понятно. А NO_KEEP_STATISTIC как видно по названию — флаг, определяющий собирать статистику или нет.
Далее подключается файл prolog_before.php, где в свою очередь подключаются все остальные необходимые файлы.
Далее
1 |
CModule::IncludeModule('main'); |
Это мы подключаем главный модуль — все его классы, функции, константы и прочее.
Надо сказать, если вы хотите использовать API битрикса, связанный например с интернет-магазином, то надо ещё модуль sale подключить
1 |
CModule::IncludeModule('sale'); |
Далее идёт
1 2 |
@set_time_limit(30000); ini_set('max_execution_time', 30000); |
ну это просто чтобы увеличить лимит выполнения скрипта, который у меня по cron выполняется.
Ну а дальше можно писать свой код, где можно использовать Bitrix API.
И мой вам совет, не меняйте локаль в своём скрипте. Пускай остаётся такая, какая нужна битриксу, иначе результат работы bitix api будет непредсказуемым.
Если что вы всегда можете проверить работу функций здесь http://<адрес сайта>/bitrix/admin/php_command_line.php?lang=ru
Если запустить код в этой коммандной строке, то он будет работать с теми настройками, с которыми работает сейчас сайт. Ну это понятно думаю.
Автору огромная просьба: «Не ставьте, пожалуйста курсивы и пр. на целые абзацы.» В зависимости от разрешения экрана, масштаба и т.д. — иногда это очень тяжело читать. Одно-два слова — это выделение, а когда целые абзацы — очень отвлекает от смысла написанного.
P.s.: Спасибо за статьи — интересные.
Хорошо, постараюсь. Но по-моему в этой статье не так много курсива. Один курсив на адрес. Может какой то тег не закрыт.
я использую более полный список
define(‘NO_AGENT_CHECK’, true);
define(‘NOT_CHECK_PERMISSIONS’, true);
define(‘STOP_STATISTICS’, true);
define(‘NO_KEEP_STATISTIC’, true);
define(‘NO_AGENT_STATISTIC’, true);