Нужно запустить данный код через cron, сейчас сервер выдает 502 ошибку. Как исправить? Цикл около 5000 раз выполняться должен.
Код |
---|
<?
set_time_limit(0);
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('BX_NO_ACCELERATOR_RESET', true);
define('CHK_EVENT', true);
define('BX_WITH_ON_AFTER_EPILOG', true);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");
$IBLOCK_ID = 18;
function csv_to_array($filename='', $delimiter=',')
{
if(!file_exists($filename) || !is_readable($filename))
return FALSE;
$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 0, $delimiter)) !== FALSE)
{
if(!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
$data = csv_to_array("update.csv", ";");
$count = count($data);
$i = 0;
while($i < $count){
usleep(1000000);
$_POST["count"] = $i;
if($data[$_POST["count"]]){
global $USER;
CIBlockFindTools::GetElementID($element_id, $element_code, $section_id, $section_code, $arFilter);
$objFindTools = new CIBlockFindTools();
$elementID = $objFindTools->GetElementID(false, $data[$_POST["count"]]["CODE"], false, false, array("IBLOCK_ID" => $IBLOCK_ID));
//echo $data[$_POST["count"]]["CODE"]. " ".$elementID;
if($elementID > 0){//если есть, то апдейтим
echo "ЕСТЬ " . $_POST["count"];
}else{//если нет, то создаем
//echo $_POST["CODE"]." - НЕТУ"; die();
$el = new CIBlockElement;
$PROP = array();
$arLoadProductArray = Array(
"MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем
"IBLOCK_SECTION_ID" => $data[$_POST["count"]]["PATH_ID"], // элемент лежит в корне раздела
"IBLOCK_ID" => $IBLOCK_ID,
"PROPERTY_VALUES"=> $PROP,
"NAME" => $data[$_POST["count"]]["NAME"],
"CODE" => $data[$_POST["count"]]["CODE"],
"ACTIVE" => "Y", // активен
"PREVIEW_TEXT" => "текст для списка элементов",
"DETAIL_TEXT" => "текст для детального просмотра",
"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
);
if($PRODUCT_ID = $el->Add($arLoadProductArray, false, false , false)) {
echo "New ID: " . $PRODUCT_ID . " COUNT = " . $_POST["count"];
}else {
echo "Error: " . $el->LAST_ERROR;
}
}
}
$i++;
$data[$_POST["count"]] = [];
}
?>
|