Запуск тяжелого обработчика из консоли сервера

Настраивал я тут недавно переезд сайта с торгового портала на систему 1С-Битрикс. Перенести нужно было более 9 тыс. товаров с очень большим объемом информации по каждому товару. Процесс обработки данных длился не один день.

Для начала хотел сделать через ajax-обработчик, чтобы видеть весь процесс, отслеживать логи, анализировать, искать проблемные места. Но когда просчитал, примерно, сколько же это займет времени - решил поменять тактику.

В корне сайта был создан файл с содержимым:

@set_time_limit(0);
ignore_user_abort(true);
ini_set('memory_limit', '1024M');
ini_set('max_execution_time', 0);
$_SERVER['DOCUMENT_ROOT'] = realpath(dirname(__FILE__).'/../..');
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
use Bitrix\Main\Application;
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/php_interface/classes/CMigrator.php');
$context = Application::getInstance()->getContext();
$request = $context->getRequest();
$action = $request->get('action');
$num = $request->get('num');
$migrator = new CMigrator();
if($action=='processingThePAge'){
	if(intval($num)>0){
		$arRow = $arRows[$num];
		$arRow['num'] = $num;
		$migrator->processOneRwoPlaton($arRow);
		$num++;
		if(isset($arRows[$num])){
			system("php /home/bitrix/ext_www/site.com/processIt.php \"action=processingThePAge\" \"num=$num\" > /dev/null 2>&1 &");

		}
	}
}

Функция system перезапускает наш скрипт с новыми параметрами. Не забывайте указывать > /dev/null 2>&1 & - это нужно для блокирования вывода инфомрации в лог сервера.

Дальше, заходим в консоль сервера и запускам данный файл на запуск:

/usr/bin/php -f /home/bitrix/ext_www/site.com/processIt.php

Т.е. указываем php обработать файл по указанному абсоллютному пути.

Количество показов: 2544
12.07.2017

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

Если вам была полезна статья можете отблагодарить автора:
Ethereum:

0x16Df809287333C49D3A237296C6248A6c08702Bc

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.