Всем привет!
Есть команда: /usr/bin/wget -q -O /dev/null /var/www/sibirix2/data/www/сайт.ru/12dev/quantity/index_modef.php
Содержимое index_modef.php:
Код |
---|
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("QUANTINA");
?>
<main class="catalog-page category-catalog-page quantity_page_style centering" id="start">
<?
function xml2assoc(&$xml){
$assoc = array();
$n = 0;
while($xml->read()){
if($xml->nodeType == XMLReader::END_ELEMENT) break;
if($xml->nodeType == XMLReader::ELEMENT and !$xml->isEmptyElement){
$assoc[$n]['name'] = $xml->name;
if($xml->hasAttributes) while($xml->moveToNextAttribute()) $assoc[$n]['atr'][$xml->name] = $xml->value;
$assoc[$n]['val'] = xml2assoc($xml);
$n++;
}
else if($xml->isEmptyElement){
$assoc[$n]['name'] = $xml->name;
if($xml->hasAttributes) while($xml->moveToNextAttribute()) $assoc[$n]['atr'][$xml->name] = $xml->value;
$assoc[$n]['val'] = "";
$n++;
}
else if($xml->nodeType == XMLReader::TEXT) $assoc = $xml->value;
}
return $assoc;
}
$glob = glob("/var/www/sibirix2/data/www/сайт.ru/12dev/quantity/xml/*.xml");
$tr_tb1 = 'TRUNCATE TABLE quantina';
$clear = $DB->Query($tr_tb1);
$h_counter = 0;
$xml = new XMLReader();
$q_file = $glob[$file_count];
$xml->open($q_file);
$assoc = xml2assoc($xml);
$all_items = count($assoc[0]['val']);
$all_files = count($glob);
$end = $all_items;
$sql = '';
$sql = 'INS ERT IN TO quantina (CODE,SHOP,QUANTITY) VALUES ';
$code_go_sql = [];
while ($h_counter < $end) {
$code_xml = str_replace(' ', '', $assoc[0]['val'][$h_counter]['atr']['GUID']);
$code = $code_xml;
$code_go_sql[] = $code;
$file_c = 0;
while (count($assoc[0]['val'][$h_counter]['val'][0]['val']) > $file_c) {
$qty = $assoc[0]['val'][$h_counter]['val'][0]['val'][$file_c]['atr']['Quantity'];
$shop_guid = $assoc[0]['val'][$h_counter]['val'][0]['val'][$file_c]['atr']['GUID'];
if ($shop_guid == '3934afd9-db2e-4e40-be95-232d6c1c8947') {
$shop_id = 5;
} elseif ($shop_guid == '84d58d66-88c5-11e8-80e4-c86000606f92') {
$shop_id = 6;
}
$sql .= '("'.$code.'",'.$shop_id.','.$qty.'),';
$file_c++;
}
$h_counter++;
}
$ins_sql = substr($sql,0,-1);
$tb_insert = $DB->Query($ins_sql);
$arSelect = array(
"ID","PROPERTY_CML2_TRAITS"
);
//WHERE
$arFilter = array(
"ACTIVE" => "Y",
"IBLOCK_ID" => 10,
"ACTIVE_DATE" => "Y",
"ACTIVE" => "Y",
"CHECK_PERMISSIONS" => "Y",
"PROPERTY_CML2_TRAITS" => $code_go_sql
);
//ORDER BY
$arSort = array(
"ID" => "DESC",
);
$arResult["ITEMS"] = array();
if ($code_go_sql) {
$rsElements = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);
$full = array();
//$h = 0;
$sql_u = '';
$sql_u_n = '';
$cur_code_ar = [];
while ($obElement = $rsElements->GetNextElement())
{
$arItem = $obElement->GetFields();
$cur_code_ar[] = $arItem['PROPERTY_CML2_TRAITS_VALUE'];
$cur_code = $arItem['PROPERTY_CML2_TRAITS_VALUE'];
$sql_u_n .= 'WHEN '.$cur_code.' THEN '.$arItem['ID'].' ';
}
if ($cur_code_ar) {
$sql_u .= 'UPD ATE quantina SE T REAL_ID = CASE CODE ';
$sql_u .= $sql_u_n;
$sql_u .= 'ELSE REAL_ID END ';
$tb_update = $DB->Query($sql_u);
$sql_trash = 'DELETE FR OM quantina WH ERE REAL_ID = "0" OR SHOP = "0"';
$tb_trash = $DB->Query($sql_trash);
}
}
?>
</main>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
|
Если запустить страницу в браузере, то он отрабатывает и добавляет запись в таблицу. Крон никак не реагирует.
Помогите разобраться. Ответов в сети не нашел.
p.s.: можно ли оптимизировать мой рнр и насколько он является корректным?