Николаев Виталий
Блог веб-разработчика: Битрикс, PHP, Python, Linux и SEO
Битрикс Битрикс
20.04.2022

Выполнение скрипта битрикс в консоли

При написании скриптов для 1С-Битрикс часто требуется запускать PHP-файл отдельно:

  • через cron;
  • из консоли;
  • для импорта данных;
  • массовой обработки;
  • парсинга;
  • экспорта;
  • служебных задач.

Для этого обычно используют подключение:

prolog_before.php

Пример шаблона standalone-скрипта

<?

$_SERVER["DOCUMENT_ROOT"] = '/var/www/site.ru/';

$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
define("NO_AGENT_CHECK", true);

define('LID', "s1");
define("LANG", "ru");

require(
    $_SERVER["DOCUMENT_ROOT"]
    . "/bitrix/modules/main/include/prolog_before.php"
);

set_time_limit(0);

// Полезный код

require(
    $_SERVER["DOCUMENT_ROOT"]
    . "/bitrix/modules/main/include/epilog_after.php"
);

?>

Что делает этот код

Код:

  • инициализирует окружение Битрикс;
  • подключает ядро системы;
  • отключает лишние проверки;
  • позволяет использовать API Битрикс вне сайта.

DOCUMENT_ROOT

$_SERVER["DOCUMENT_ROOT"]

задает:

  • корневую директорию сайта.

Это особенно важно:

  • при запуске через CLI;
  • через cron;
  • из консоли Linux.

NO_KEEP_STATISTIC

define("NO_KEEP_STATISTIC", true);

отключает:

  • сбор статистики.

Это ускоряет выполнение скрипта.

NOT_CHECK_PERMISSIONS

define("NOT_CHECK_PERMISSIONS", true);

отключает:

  • проверку прав доступа.

Особенно полезно:

  • для cron;
  • служебных скриптов;
  • автоматизации.

NO_AGENT_CHECK

define("NO_AGENT_CHECK", true);

отключает:

  • выполнение агентов Битрикс.

Это помогает:

  • ускорить скрипт;
  • избежать случайного запуска агентов.

LID

define('LID', "s1");

задает:

  • ID сайта Битрикс.

Особенно важно:

  • при многосайтовости;
  • работе с почтовыми шаблонами;
  • получении настроек сайта.

LANG

define("LANG", "ru");

задает:

  • язык интерфейса.

Подключение prolog_before.php

require(
    $_SERVER["DOCUMENT_ROOT"]
    . "/bitrix/modules/main/include/prolog_before.php"
);

подключает:

  • ядро Битрикс;
  • модули;
  • API;
  • базу данных;
  • глобальные объекты.

set_time_limit(0)

set_time_limit(0);

отключает:

  • ограничение времени выполнения скрипта.

Это полезно:

  • для импорта;
  • парсеров;
  • массовых операций.

epilog_after.php

epilog_after.php

завершает:

  • работу окружения Битрикс;
  • корректно закрывает обработку.

Где удобно использовать

  • cron-задачи;
  • импорт CSV;
  • обновление товаров;
  • парсеры;
  • массовые обновления инфоблоков;
  • резервные скрипты;
  • интеграции.

Пример запуска через cron

*/5 * * * * /usr/bin/php /var/www/site.ru/script/import.php

Важно про безопасность

Не рекомендуется:

  • оставлять такие скрипты в публичном доступе;
  • размещать их в корне сайта;
  • забывать проверку IP или авторизации.

Лучшее место для скриптов

Обычно служебные скрипты размещают:

/local/scripts/

или:

/cron/

Итог

Такой шаблон позволяет запускать полноценные PHP-скрипты с подключенным ядром 1С-Битрикс вне публичной части сайта.

Это базовая заготовка для:

  • cron;
  • импортов;
  • экспортов;
  • парсеров;
  • служебных задач.
12 просмотров

Комментарии

Где заказы?
Почему у одних компаний очередь из клиентов, а у других пустой сайт и тишина?
Телеграм канал «Где заказы?» — про продажи, сайты и ошибки бизнеса на реальных примерах. Подписаться