Добррый день. у меня похожая проблема. На сайте есть файл import.php, который импортирует товары в каталог.
Если запускать файл вручную из браузера, то все товары импортируются, и участвуют в поиске.
Если запускать файл из крона, командой
*/15 * * * * /usr/bin/php /var/www/ms-remit/data/www/mosremit/import.php\
то импорт также работает, товары добавляются, но в поиске уже не участвуют, приходится вручную переиндексировать сайт.
По крону импорт должен запускаться каждые 15 минут. не могу же я вручную каждые 15 мин переиндексацию проводить. Помогите что нужно сделать.
Код импорта привожу:
#!/usr/bin/php
<?php
$_SERVER['DOCUMENT_ROOT'] = '/usr/www/users/limomn/mosremit.ru/www';
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
file_put_contents("import_products.log", 'DOCUMENT_ROOT' . $_SERVER['DOCUMENT_ROOT'] . " \r\n", FILE_APPEND);
file_put_contents("import_products.log", date("Y-m-d h:i:s") . " \r\n", FILE_APPEND);
CModule::IncludeModule("iblock");
CModule::IncludeModule("sale");
CModule::IncludeModule("catalog");
CModule::IncludeModule("subscribe");
global $USER;
global $APPLICATION;
IncludeModuleLangFile($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/catalog/import_setup_templ.php');
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT']."/upload/1C/ProductsV2.xml");
include($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/catalog/load_import/xmlp_product_parser.php");
$iProductsCounter = 0;
$xmlProducts = new stdClass();
file_put_contents("import_products.log", "Xml parsing \r\n", FILE_APPEND);
foreach($xml as $node_key => $node)
{
$iProductsCounter += xmlp_product_parser::getCountProduct($node);
$xmlProducts = xmlp_product_parser::getXmlProduct($node);
if($node_key == "NewPrice")
{
xmlp_product_parser::setProductProperty($node, $xmlProducts);
}
}
$xml = $xmlProducts;
$NUM_CATALOG_LEVELS = intval(COption::GetOptionString("catalog", "num_catalog_levels", 3));
if (0 >= $NUM_CATALOG_LEVELS)
$NUM_CATALOG_LEVELS = 3;
$arSetupErrors = array();
global
$arCatalogAvailProdFields,
$defCatalogAvailProdFields,
$arCatalogAvailPriceFields,
$defCatalogAvailPriceFields,
$arCatalogAvailValueFields,
$defCatalogAvailValueFields,
$arCatalogAvailQuantityFields,
$defCatalogAvailQuantityFields,
$arCatalogAvailGroupFields,
$defCatalogAvailGroupFields,
$defCatalogAvailCurrencies;
include($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/catalog/load_import/remit_import/index.php");
Пробовал уже создавать новый объект $USER. Не помогло
Если запускать файл вручную из браузера, то все товары импортируются, и участвуют в поиске.
Если запускать файл из крона, командой
*/15 * * * * /usr/bin/php /var/www/ms-remit/data/www/mosremit/import.php\
то импорт также работает, товары добавляются, но в поиске уже не участвуют, приходится вручную переиндексировать сайт.
По крону импорт должен запускаться каждые 15 минут. не могу же я вручную каждые 15 мин переиндексацию проводить. Помогите что нужно сделать.
Код импорта привожу:
#!/usr/bin/php
<?php
$_SERVER['DOCUMENT_ROOT'] = '/usr/www/users/limomn/mosremit.ru/www';
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
file_put_contents("import_products.log", 'DOCUMENT_ROOT' . $_SERVER['DOCUMENT_ROOT'] . " \r\n", FILE_APPEND);
file_put_contents("import_products.log", date("Y-m-d h:i:s") . " \r\n", FILE_APPEND);
CModule::IncludeModule("iblock");
CModule::IncludeModule("sale");
CModule::IncludeModule("catalog");
CModule::IncludeModule("subscribe");
global $USER;
global $APPLICATION;
IncludeModuleLangFile($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/catalog/import_setup_templ.php');
$xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT']."/upload/1C/ProductsV2.xml");
include($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/catalog/load_import/xmlp_product_parser.php");
$iProductsCounter = 0;
$xmlProducts = new stdClass();
file_put_contents("import_products.log", "Xml parsing \r\n", FILE_APPEND);
foreach($xml as $node_key => $node)
{
$iProductsCounter += xmlp_product_parser::getCountProduct($node);
$xmlProducts = xmlp_product_parser::getXmlProduct($node);
if($node_key == "NewPrice")
{
xmlp_product_parser::setProductProperty($node, $xmlProducts);
}
}
$xml = $xmlProducts;
$NUM_CATALOG_LEVELS = intval(COption::GetOptionString("catalog", "num_catalog_levels", 3));
if (0 >= $NUM_CATALOG_LEVELS)
$NUM_CATALOG_LEVELS = 3;
$arSetupErrors = array();
global
$arCatalogAvailProdFields,
$defCatalogAvailProdFields,
$arCatalogAvailPriceFields,
$defCatalogAvailPriceFields,
$arCatalogAvailValueFields,
$defCatalogAvailValueFields,
$arCatalogAvailQuantityFields,
$defCatalogAvailQuantityFields,
$arCatalogAvailGroupFields,
$defCatalogAvailGroupFields,
$defCatalogAvailCurrencies;
include($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/catalog/load_import/remit_import/index.php");
Пробовал уже создавать новый объект $USER. Не помогло