Для работы решения требуется версия ядра 1С-Битрикс не ниже 21.400.0, а также установленный модуль "Интернет-магазин" (bitrix:sale) и "Торговый каталог" (bitrix:catalog).
Работоспособность решения проверялась на типовой установке актуальной версии 1С-Битрикс в редакции "Бизнес", доступной по адресу https://www.1c-bitrix.ru/download/files/business_encode.zip или https://www.1c-bitrix.ru/download/business_encode.tar.gz
Глобально или в папку ./local согласно инструкции: https://getcomposer.org/download/
В папке ./local
composer install
или
php composer.phar install
или в соответствии с используемой ОС, конфигурацией веб-сервера и способом установки composer.
Адрес в панели администрирования 1С-Битрикс: http://[сервер]/bitrix/admin/partner_modules.php?lang=ru
написать скрипт, который будет периодически дергаться кроном (периодичность указать) и искать заказы, которые висят в начальном статусе больше двух дней. Если такие заказы есть, отправить e-mail администратору сайта, в письме указать номера найденных заказов
После общих процедур, указанных выше, продолжить по инструкции:
Адрес в панели администрирования 1С-Битрикс: http://[сервер]/bitrix/admin/sprint_migrations.php?config=cfg&lang=ru
При этом будет создано новое почтовое email-событие типа "MISSED_ORDERS", а также почтовый шаблон для этого события для сайта по умолчанию.
php [путь_до_document_root]/local/php_interface/cron/missed_orders.php
от имени пользователя, обладающего соответствующими правами, например, bitrix.
Поскольку скрипт будет выполняться не через веб-сервер, при использовании многосайтовости определение текущего сайта может не работать, поэтому почтовое событие будет отправляться для сайта по умолчанию из настроек 1С-Битрикс.
Если почтовый шаблон не будет найден или отправка завершится неудачей, то будет произведена попытка отправки email через php-функцию mail() на адрес отправителя по умолчанию из настроек 1С-Битрикс.
написать API CRUD (добавление, чтение, обновление, удаление) для корзины. Использовать ядро d7
После общих процедур, указанных выше, продолжить по инструкции:
Согласно инструкции из документации раздел "Запуск"
Адрес в панели администрирования 1С-Битрикс: http://[сервер]/bitrix/admin/sprint_migrations.php?config=cfg&lang=ru
При этом в настройки в файл .settings.php будет добавлено подключение файла api_basket.php с конфигурацией маршрутов для REST API.
Данное API использует cookie для хранения идентификатора сессии, поэтому оно не подходит для использования в приложениях с аутентификацией по токену. При этом оно позволяет работать с корзиной неаутентифицированным пользователям. Для реализации полноценного REST API возможно использование интеграции через модуль "REST" (bitrix:rest), которая активирована в настройках модуля, но данный механизм не тестировался.
Формат запросов и ответов данного API описан в документации https://basketapiv1.docs.apiary.io/
есть файл в несколько сотен тысяч строк нужно его загрузить в БД
- как организуете хранение в БД?
- как будете загружать содержимое файла в БД?
Слишком мало конкретики в постановке задачи, уточнений по моему вопросу не последовало, поэтому ответ будет очень абстрактный. Если данные в строках структурированы, то можно хранить в реляционной БД или, например, в ElasticSearch. Дальше очень сильно все зависит от того как эти данные будут использоваться в дальнейшем. Если данные не структурированы, то можно хранить в нереляционной БД.
Если говорить о хранении в реляционной БД, то, например, в MySQL максимальной скорости можно достичь, используя импорт из файла SQL-запросом LOAD DATA INFILE.
Если же считывание из файла недоступно из-за настроек безопасности, то нужно формировать запрос(ы) вида:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3), (4,5,6), (7,8,9), ...
При этом каждый запрос должен по размеру не превышать максимально разрешенный в настройках mysql размер max_allowed_packet.
Такой подход позволит уменьшить количество перестроений индексов, если они есть. Если индексов в таблице много, и запросов формируется много, то можно перед вставкой данных удалить индексы, а затем снова их добавить.
Кроме того можно изменить таблицы на MyISAM, если используется InnoDB, а после завершения вставки данных вернуть обратно InnoDB.