Частный БИТРИКС-программист

Статьи

Используем Bitrix API в своих скриптах

Что нужно, чтобы использовать Bitrix API? Например в своих скриптах, в скриптах, запускаемых по расписанию и тд и тп.

Следующий пример — скрипт для запуска по cron.

Пишем в начале своего файла следующее.

$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, где в свою очередь подключаются все остальные необходимые файлы.

Далее

CModule::IncludeModule('main');

Это мы подключаем главный модуль — все его классы, функции, константы и прочее.

Надо сказать, если вы хотите использовать API битрикса, связанный например с интернет-магазином, то надо ещё модуль sale подключить

CModule::IncludeModule('sale');

Далее идёт

@set_time_limit(30000);
ini_set('max_execution_time', 30000);

ну это просто чтобы увеличить лимит выполнения скрипта, который у меня по cron выполняется.

Ну а дальше можно писать свой код, где можно использовать Bitrix API. Лучше не меняйть локаль в своём скрипте! Пускай остаётся такая, какая нужна битриксу, иначе результат работы bitix api будет непредсказуемым. Если что вы всегда можете проверить работу функций здесь http://<адрес сайта>/bitrix/admin/php_command_line.php?lang=ru

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


Возврат к списку